我想将数据从UDP服务器发送到UDP客户端。服务器具有公共IP,它正在侦听已知的端口号,因此客户端可以使用UDP将数据发送到服务器,但客户端在NAT后面,客户端不在侦听已知端口。服务器无法在需要时将数据发送到客户端。 是否有可能客户端可以联系服务器和服务器可以使用该客户端网关的端口和公共地址重播?
无论如何还是有好的方法将数据从UDP服务器发送到NAT后面的UDP客户端?
答案 0 :(得分:3)
在大多数情况下,服务器可以在收到来自UDP客户端的传入消息后立即发送数据。服务器可以将数据包发送到源IP和端口号。但是,如果服务器想要在需要时发送数据,则可能无法正常工作。 NAT会刷新ip / port映射。
我能想到一个解决方案。不是一种非常有效的方式。 UDP客户端应该继续ping服务器。通过这种方式,它可以防止NAT通过保持通信活动来清除映射。
http://www.brynosaurus.com/pub/net/p2pnat/
上面给出的链接解释了UDP打孔。