我正在做一些移动项目,需要与两个设备进行 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 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 不是 Symmetric Cone。