1

我正在尝试从 Android 设备上的小型 Java 代码联系 UDP 服务器。当连接到我家的 Wi-Fi 互联网时,会联系服务器并用数据响应数据包,然后数据会到达设备。

但是,当连接到移动网络时,相同的程序会运行,数据包确实会到达服务器,但服务器回复数据包会丢失。此外,有人会说手机的移动运营商决定阻止传入的 UDP 流量或类似的东西,但我已经测试并尝试访问我的家庭服务器而不是之前的服务器,并且 UDP 数据包已经返回!

所以让我们总结一下:移动网络毫无问题地发送 UDP 数据包,但一些 IP 的回复数据包会被丢弃。我错过了什么吗?是否应该使用通用的 UDP 端口来防止这种情况?流行的 UDP 应用程序如何不会遇到此类问题?

4

1 回答 1

2

您没有确定您来自哪个运营商或国家/地区。但许多移动网络实施运营商级 NAT(双重 NAT 连接),这可能是根本原因。

您没有描述您正在使用的协议。但是 UDP 协议在客户端和服务器之间可靠地工作的方式是客户端不指定在协议中响应的本地端口。相反,UDP 服务器使用套接字 API 指示数据包从其发送的地址进行响应。UDP 客户端侦听从其向服务器发送消息的相同端口和套接字。

于 2013-10-24T09:45:23.750 回答