做聊天软件,如何穿透内网通信? 这里有介绍http://wenku.baidu.com/view/02a7e388d0d233d4b14e6936.html,你自己去看下吧,我不懂。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 其实,你不是有个外网的服务器么?客户登陆的时候都去连接这个服务器,服务器会记录他们的外网IP跟端口。这样就不存在内网的问题。假如是内网A登陆,在服务器上记录:A:外网IP跟端口。内网B登陆,在服务上记录B:外网IP跟端口。这样子A跟B的对外端口跟IP,服务器都知道了。A想知道B的信息,可以找服务器请求就可以了 对于文本信息,QQ是不会做点对点的,都是服务器中转。原因有以下几点:1.文本数据量很小,对服务器的压力不大2.好多客户端都在内网,内网之间不能通信3.对于群聊消息,受2的影响,用点对点逻辑十分复杂4.用点对点将使得政府无法监控聊天言论,而且不能使用程序自动过滤消息5.QQ的网管可以看到任何人之间的聊天,以便为公安部门提供线索对于传文件等数据,QQ是按如下进行的A给B发文件的过程是这样的:1.A在界面上操作,给用户B发一个文件2.操作被传到QQ服务器上,服务器验证B的状态,并查出B的IP地址3.服务器将B的IP地址,端口,状态等信息传给A4.A根据服务器传回的信息,如果B状态为不在线等等,就在界面上告知A,并提示发送“离线文件”5.A根据服务器的消息,如果B状态为在线,则直接连接B的IP地址,如果B为公网IP,则立刻连上,此时相当于P2P传输,如果A,B在局域网内,由于直接连接的IP,那速度就相当快。如果在公网上则取决于A的上行带宽和B的下行带宽,还有运营商之间的接口带宽。6.如果A无法连接B,则A将无法连接的消息传给服务器,服务器给B消息,让B试图反向连接A7.如果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 这里面涉及到几个问题,你的内网上网发送可能不一样,有些可以直接连接外网的地址,这种很好办直接connect就可以了,有些不行,比如通过代理服务器上网的,这样的话必须要先连接代理服务器,发消息去连接外网;这个是和外网通讯的屏障,后面就是要解决点对点通讯的问题了 关于远程注入的一个问题。。。 Clistctrl表头没有重绘? SID CToolBar 怎么与View 通讯?或者说bar的按钮怎么调用View里的function 怎么在对话框中动态画一白色矩形框? 长沙市继续招VC程序员 新手提问:CSocket::Receive 接上帖...200分大家来关注啊... 如何才能在MainFrame里加入Tooltip 关于WinCE线程和内存管理的一个疑惑 问一个简单问题,如何将cdc->textout(0,0,"abcdefg")中加上回车转义符 VC+MAPX控件移动 winxp 下配置ddk
客户登陆的时候都去连接这个服务器,服务器会记录他们的外网IP跟端口。
这样就不存在内网的问题。假如是内网A登陆,在服务器上记录:A:外网IP跟端口。
内网B登陆,在服务上记录B:外网IP跟端口。
这样子A跟B的对外端口跟IP,服务器都知道了。A想知道B的信息,可以找服务器请求就可以了
原因有以下几点:
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