Networking 每个NAT下的P2P网络
我正在做一些移动项目,需要与两台设备进行P2P通信。Networking 每个NAT下的P2P网络,networking,udp,p2p,nat,hole-punching,Networking,Udp,P2p,Nat,Hole Punching,我正在做一些移动项目,需要与两台设备进行P2P通信。 我面临着这个问题。(因为智能手机很少有公共ip) 我找到了一些答案。这是“UDP打孔” 我想我100%理解“UDP打孔”的概念,并编写了一些代码。 但它不起作用 这就是我的处境 Device A connected NAT(A) for Wi-Fi. Device B connected NAT(B) for Wi-Fi. NAT(A) and NAT(B) is different one. Relay Server S bi
我面临着这个问题。(因为智能手机很少有公共ip) 我找到了一些答案。这是“UDP打孔” 我想我100%理解“UDP打孔”的概念,并编写了一些代码。 但它不起作用 这就是我的处境
Device A connected NAT(A) for Wi-Fi.
Device B connected NAT(B) for Wi-Fi.
NAT(A) and NAT(B) is different one.
Relay Server S bind socket and waiting for devices. (S is WebServer but Network Status is good.)
At the first, A and B send dummy packet to S. Then S save UniqueID(to tell A and B), Public IP, Port.
And S send information to each device A and B.
Like this:
- IP Address and Port Number about A. -> send to B
- IP Address and Port Number about B. -> send to A
Now A and B send UDP packet to other device based on information(IP Address and Port Number) from S.
(15 per second. using same socket that used server-device session)
但它不起作用。(实际上是间歇性地工作。也许每10次就有一次?我不知道成功和失败的原因。没有任何微小的共同关系。)
我认为这不是NAT类型的问题。我在韩国进行了测试,韩国90%的NAT不是对称圆锥
你能解释一下(更详细的)如果它“不起作用”会发生什么吗?你在a和B连一个包都没有收到吗?(还是只发送一些数据包然后停止?)数据包是否到达中继服务器?--另外:了解您使用的是哪种路由器硬件(例如Linksys WRT54GU)以及您使用的是哪种固件可能会有所帮助。两个客户端(设备)都无法获得其他客户端的数据包,但当时与服务器联网是可以的。(使用sage套接字,并且在停止与服务器联网时,客户端也无法获取数据包。)因此,我们尝试将数据包发送到新服务器S,而不是发送到B(这取决于目标源是否更改,NAT是否分配新端口号),S获得的端口号与S获得的端口号相同。我们测试了NAT硬件为“iptime N6004”和蜂窝(Wibro、3G、LTE)。此外,我们还测试了蜂窝环境。(两个设备均使用蜂窝网络而非Wi-Fi)。如果是硬件问题,UDP打孔在蜂窝环境中是不可能的?您能解释一下(更详细的)如果“不工作”会发生什么吗?你在a和B连一个包都没有收到吗?(还是只发送一些数据包然后停止?)数据包是否到达中继服务器?--另外:了解您使用的是哪种路由器硬件(例如Linksys WRT54GU)以及您使用的是哪种固件可能会有所帮助。两个客户端(设备)都无法获得其他客户端的数据包,但当时与服务器联网是可以的。(使用sage套接字,并且在停止与服务器联网时,客户端也无法获取数据包。)因此,我们尝试将数据包发送到新服务器S,而不是发送到B(这取决于目标源是否更改,NAT是否分配新端口号),S获得的端口号与S获得的端口号相同。我们测试了NAT硬件为“iptime N6004”和蜂窝(Wibro、3G、LTE)。此外,我们还测试了蜂窝环境。(两个设备均使用蜂窝网络而非Wi-Fi)。如果是硬件问题,UDP打孔在蜂窝环境中是不可能的?