0

我有一个简单的客户端应用程序,它将 udp 数据报发送到具有已知 IP 地址和端口的服务器并等待响应。客户端可以在任何计算机或移动设备上启动,它可以位于多个路由器和防火墙后面...服务器应用程序侦听客户端数据报的特定端口,并回复客户端的端点并给出答案。服务器应用程序可以在具有正确配置的防火墙等的 Windows 计算机上运行。因此,据我了解,无论客户端的位置和防火墙设置如何,这个简单的方案都应该可以工作。但看起来它在大约 75% 的配置中不起作用。服务器在 100% 的情况下收到来自客户端的请求,但在 75% 的情况下客户端无法收到来自服务器的响应,即看起来像这样 s 总是被某些东西阻止(服务器尝试 10 次向客户端发送答案,但没有运气,即客户端没有收到任何东西)。我尝试了许多不同的客户端计算机配置,以找出这些问题的原因以及我的发现:

  1. 在某些情况下,简单的 Windows 防火墙可以阻止响应数据包(但这怎么可能?据我所知,无论防火墙设置如何,所有响应数据包都必须转发回客户端。)

  2. 一些硬件防火墙或 NAT 也可以阻止响应 UDP 数据包。再说一次,我不明白为什么它可能?

问题是 - 是否有任何可靠的方法可以向客户提供答案?据我所知,即使存在所有这些网络“障碍”,许多程序(例如 Skype)也可以与 UDP 一起正常工作。

谢谢!

4

0 回答 0