【问题标题】:How to send data from UDP Server to UDP client behind NAT? [closed]如何将数据从 UDP 服务器发送到 NAT 后面的 UDP 客户端? [关闭]
【发布时间】:2014-12-18 04:01:14
【问题描述】:

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

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

【问题讨论】:

标签: c linux sockets networking


【解决方案1】:

在大多数情况下,服务器在收到来自 UDP 客户端的传入消息后立即发送数据是可能的。服务器可以将数据包发送到源 ip 和端口号。但是,如果服务器想要在需要时发送数据,它可能无法正常工作。 NAT 会清除 ip/port 映射。

我能想到一种解决方案。不是很有效的方法。 UDP 客户端应继续 ping 服务器。通过这种方式,它可以防止 NAT 通过保持通信活动来清除映射。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-30
    相关资源
    最近更新 更多