公司需要作一个类似于QQ的东东,我想问问QQ在internet中如何通信的,和局域网中的QQ有何不同?(200分)

  • 主题发起人 主题发起人 headlm
  • 开始时间 开始时间
H

headlm

Unregistered / Unconfirmed
GUEST, unregistred user!
在局域网中,socket通过IP来通信,在Internet中,如通过局域网上的Internet或通过代理后,会有什么不同?QQ使用的是哪种协议?有没有人做过这样的开发?
 
这样的贴子很多哦
 
现成的例子都有,叫ice什么的,聊天例子到处都有。
 
大部分是TCP 少部分是UDP 比如双方都通过代理上网。这时候要进入2人世界就必须用UDP
 
我有不少是局域网内QQ的例子,但我要的是能够通过局域网连接Internet,和别的局域网
内的用户通信。我在大富翁上找过,没有找到,请帮帮忙。
 
你找到没有?我也在找这方面资料
 
下个p2p控件 还要写server 挺麻烦的...
 
全国第一套 建筑钢结构专业程序发布www.casakj.com 欢迎下载!绝对受益匪浅
 
p2p控件.我觉得不好用.
 
没做过 DING
 
还写干什么,网上一找一大把
去看看jabber项目...
 
你好,我做有完成的,类似qq一样,有视频语音文字聊天,文件传输,delphi开发
qq:444094419
 
局域网直接用TCP快准确。这样的你很多,不用说了。
关于类似QQ的就架构而言就复杂的多,许多细节问题不是一言两语可讲完的,你先找找
相关协议看看。如果只是练练手的话,搞清楚原理做些基本功能就行。要想实现功能完备的软件项目,就得下大功夫了。
QQ的通讯协议复杂,大致上是P2P,基于UDP通讯的。其中QQ所定的协议,复合型参杂其中,很多而复杂。


下面有一段OICQ通信详解:
{
OICQ之间的通迅应该是这样的,当你登录时,会QQ服务器提供你当前所在的IP地址各端口
号,然后当你的好友上线时,就会从QQ服务得到这个IP和Port,以后的通迅才能继续!
上面可能没说得太清楚,下面举个例子来解释,
比如说,你在一家网吧里上网,这个网吧的服器有一个真正的IP地址(可能是临时的--对于
拨号上网;或者是固定的--对于专线上网)比如是61.168.45.120,同时有一个网吧局域网
的IP地址,比如192.168.0.1。而你在该网吧内IP地址为192.168.0.3的机器上用OICQ,当你
上线时,QQ会按你设定的路由发送数据(对于网吧,一般是设IP为192.168.0.3的机器的默
认网关为网吧的服务器,即192.168.0.1的机器)把你所在机器的IP(192.168.0.3)和Port
(一般第一个QQ为4000,二个为4001,依次类推,这时设为4000)通知网吧服器,由于网吧
的服务器(也可说是一个网关)要同时满足多台机器上网的需要,会在它的局域网地址(
即192.168.0.1上)动态的分配一个Port(如 4782)与你通迅,同时再在真正的IP(
即61.168.45.120)上分配一个Port(比如 5472)将你的数据发送到互联网上,这里即为向
QQ服务器发出它的IP和Port(这些都是在网吧服务器上运行的一个代理软件 如WinGate、
SyGate等 所做操作)。
{注意:这个发出的IP是网吧服务器的那个真正IP,Port为相对于这个IP的一个端口(5472)}
现在QQ服务器就把你的QQ当着是在IP为61.168.45.120的机器的Port 5472上运行了,当你的
好友上线时,它就会得到这个IP和Port,然后和你通迅,即把所有发给你的数据都发到
IP为61.168.45.120的机器的5472 Port上,然后网吧服务器上所装的代理软件(比如
WinGate、SyGate等)就会把这些数据通过局域网地址(IP:192.168.0.1,Port:4782)转发到
你所在的机器(192.168.0.3)的相应Port(4000)上,即完成通迅。
其实这中间主要有两个方面 一、就是网吧服务器中的代理,它负则对局域到互联网、互联
网到局域网的数据进行转发。第二,也是关键的一点就是QQ每次上线时会向QQ服务器注册自
己所在的IP和Port,并从QQ服务器中读出在线好友所在的IP和Port信息而进行通讯。当然处
于局域网时这些操作又都是通过网吧服务器中的代理完成的。

具体怎么和代理通讯,数据包的格式你要找socks5的规范手册查查。
NAT就容易的多了。也是通过一个地址映射,比如你想要外面的机器访问你的本机的90端口,
你首先建一个UDPserver开始监听本机的90端口,然后通过本机的UDPserver向外网机器发数据包,
外网机器收到包时会取得来源的IP和PORT,这就是经过地址映射后你的器的IP和90端口在NAT盒的地址映射,
外网的机器通过身这个收到的IP和PORT发数据你的本地机器就可以收到了。注意的是,NAT映射有超时限制,
如果一定时间你没有数据活动的话就会被取消映射,所以QQ要一定时间就发几个包发出去来维持个有映射的活动,
可以看看NAT的RFC规范。
解说完毕
}
 
听说P2P的功能很强大 我安装了一下 可以读出本地的计算机名字,和自定义端口 但是怎么读本机的IP地址呢?或者说是通过那个属性读的?
 
问题已解决!
 

Similar threads

后退
顶部