如何从 UDP 服务器向 NAT 后的 UDP 客户端发送数据?

cod*_*007 7 c sockets linux networking

我想将数据从UDP服务器发送到UDP客户端。服务器具有公共 IP 并且正在侦听已知端口号,因此客户端可以使用 UDP 向服务器发送数据,但客户端位于 NAT 之后并且客户端未侦听已知端口。服务器无法在需要时向客户端发送数据。客户端是否可以联系服务器并且服务器可以使用客户端网关的端口和公共地址进行重播?

有没有什么好的方法可以将数据从 UDP 服务器发送到 NAT 后面的 UDP 客户端?

See*_*van 8

在大多数情况下,服务器在收到来自 UDP 客户端的传入消息后立即发送数据是可能的。服务器可以向源ip和端口号发送数据包。但如果服务器想在需要时发送数据,则可能行不通。NAT 会清除 IP/端口映射。

我能想到一个解决方案。这不是一个非常有效的方法。UDP 客户端应保持对服务器进行 ping 操作。这样,它可以通过保持通信活动来防止 NAT 刷新映射。

http://www.brynosaurus.com/pub/net/p2pnat/

上面给出的链接解释了 UDP 打洞。