gpt4 book ai didi

ios - iOS 上的 UDP 打洞

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:11:45 26 4
gpt4 key购买 nike

我已经建立了一个网络项目,通过打洞在 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 台设备单向工作,但在同一网络上的两台设备上却完全不能工作?

最佳答案

从那以后我发现我们的一个路由器正在检测从一个客户端发送到另一个客户端的消息包含到服务器的不同目标 IP 地址,然后我们的路由器决定这些消息应该通过不同的发送外部端口。这就是问题的来源。使用一些端口预测,大多数时候都可以克服这个障碍。

对于那些感兴趣的人来说,大多数情况下,如果无法在假定端口找到连接,则很可能是在下一个端口(即端口# + 1)。如果没有,从那里开始计算会变得有点复杂。

关于ios - iOS 上的 UDP 打洞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18215017/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com