这里有介绍http://wenku.baidu.com/view/02a7e388d0d233d4b14e6936.html,你自己去看下吧,我不懂。

解决方案 »

  1.   

    其实,你不是有个外网的服务器么?
    客户登陆的时候都去连接这个服务器,服务器会记录他们的外网IP跟端口。
    这样就不存在内网的问题。假如是内网A登陆,在服务器上记录:A:外网IP跟端口。
    内网B登陆,在服务上记录B:外网IP跟端口。
    这样子A跟B的对外端口跟IP,服务器都知道了。A想知道B的信息,可以找服务器请求就可以了
      

  2.   

    对于文本信息,QQ是不会做点对点的,都是服务器中转。
    原因有以下几点:
    1.文本数据量很小,对服务器的压力不大
    2.好多客户端都在内网,内网之间不能通信
    3.对于群聊消息,受2的影响,用点对点逻辑十分复杂
    4.用点对点将使得政府无法监控聊天言论,而且不能使用程序自动过滤消息
    5.QQ的网管可以看到任何人之间的聊天,以便为公安部门提供线索对于传文件等数据,QQ是按如下进行的
    A给B发文件的过程是这样的:
    1.A在界面上操作,给用户B发一个文件
    2.操作被传到QQ服务器上,服务器验证B的状态,并查出B的IP地址
    3.服务器将B的IP地址,端口,状态等信息传给A
    4.A根据服务器传回的信息,如果B状态为不在线等等,就在界面上告知A,并提示发送“离线文件”
    5.A根据服务器的消息,如果B状态为在线,则直接连接B的IP地址,如果B为公网IP,则立刻连上,此时相当于P2P传输,如果A,B在局域网内,由于直接连接的IP,那速度就相当快。如果在公网上则取决于A的上行带宽和B的下行带宽,还有运营商之间的接口带宽。
    6.如果A无法连接B,则A将无法连接的消息传给服务器,服务器给B消息,让B试图反向连接A
    7.如果B连接A成功,则执行5的过程,也是P2P传输
    8.如果A无法连接B,而且B无法连接A,则说明A,B都处于不同的内网内,都没有公网IP,无法直接连接。服务器则开始协调A和B进行打洞,详细过程见"P2P打洞和NAT穿越"
    9.经过第8步,如果打洞成功(取决于A,B所处的网络环境和连接的路由等),则A和B仍然直接传送数据,也是P2P传输。
    10.如果A,B打洞不成功,A和B无论如何也不能直连,也就是不能进行P2P传输,这时需要服务器中转数据。总之,对于你的问题,如果是纯文本消息,并不采用点对点传输。对于内网通信和打洞的问题,你可以看如下文章
    http://www.vckbase.com/document/viewdoc/?id=1773
      

  3.   

    这里面涉及到几个问题,你的内网上网发送可能不一样,有些可以直接连接外网的地址,这种很好办直接connect就可以了,有些不行,比如通过代理服务器上网的,这样的话必须要先连接代理服务器,发消息去连接外网;这个是和外网通讯的屏障,后面就是要解决点对点通讯的问题了