我已经建立了一个网络项目,通过打孔通过 LAN 或 WAN 进行通信。我正在为客户端使用 GCSAsyncUdpSocket。我有一个集合服务器,它的端口被转发,可以从所有传入连接访问。我的设置是这样的:
Client A connects to the server.
Client B connects to the server.
Server observes the IP address and Port used by both clients.
Server tells Client A to communicate with public IP Address B and public Port B.
Server tells Client B to communicate with public IP Address A and public Port A.
Client A sends periodic data to Client B.
Client B sends periodic data to Client A.
这是有点奇怪的地方。虽然客户端在同一个网络上,我们已经在我们的两个网络上尝试过,但没有任何效果。但是,如果设备连接到不同的网络(都与不同的供应商并且没有直接链接),那么其中一个设备会接收数据,而另一个不会。
这也无法完全适用于 3G。
我无法理解的是它如何在每个网络上使用 1 台设备单向工作,但在同一网络上的两台设备根本不工作?