p2p穿透失败怎么办
我分析了下你的问题应该是这样:
假设客户端监听了23458端口,但外网看到的端口并不是23458,而是网关随机分配的一个端口(除非做了端口映射)
如果你另一个局域网的客户端往23458端口发送数据包,自然不成功
我建议客户端随机监听一个端口,然后向公网服务器发送数据,比如STUN协议,服务器就知道客户端的公网端口了
然后服务器把客户端A的公网IP:公网端口发给客户端B,告诉它A要和他打洞,B收到后立即向A间隔发送几个包;同理,A也一样。
如果NAT类型可以穿透,就会打洞成功。
不怎么明白LZ的描述哈。
路由器1 2 对于与路由器3并行的内网来说,IP均为 19216801 这个好理解。
但是如何绑定别的机子的SOCKET我还是第一次听说哈,绑定貌似只能绑定本地的SOCKET和本地的端口。
楼主的意思是不是:用19216802这个IP给另外一个网段的19216802
发送数据?虽然描述得不是很清晰。毕竟,把电脑IP设置成路由器的IP,会造成一定问题,甚至很多都会提示IP冲突。
如果楼主是我说的那个意思,那么,很遗憾的告诉你,还真没办法直接发送数据。
这样的情况就像两个都是内网的机子进行通信。
要想实现这种通信,楼主可以去搜索下P2P技术。
大概意思是先让两台电脑联系上公共的主机。建立相应的路由路径然后由主机指挥他们打洞,实现直接通信。
就像QQ一样,两台都是内网的机子(不同网段),不可能实现直接指定IP就能发送数据(这样的IP太多了,成千上万的1921680,且该网段属于保留网段,指定此IP只能用于同一网段(局域网)的机器进行通信)。
这样会造成数据发送到本网段的该IP机器上。这时,QQ服务器就出现了
登录的时候就会传递一个路由路径这个传递的地址会有一定的有效期,所以就需要定时或不定时(有效期内可自由设定)发送心跳包用以表示还存活着。
然后服务器回应,表示收到数据。这时,如果好友之间进行聊天,就出现两种情况:1数据完全由服务器进行转发。2服务器让他们建立p2p连接直接通信
希望楼主能理解。跨网段的内部机器是不能直接指定IP通信的。必须借助服务器转发或者用服务器实现p2p。
至于p2p,楼主可以去网上搜索下,文章很多,也有直接代码的。
希望采纳哇,累死我了。
0条评论