我正在尝试从Android设备上的小型Java代码联系UDP服务器。 连接到我家的Wi-Fi互联网时,会联系服务器并响应数据包 然后使用数据到达设备。
然而,当连接到移动网络时,运行相同的程序,数据包就会生成 到服务器但服务器回复数据包丢失。 此外,可以说手机的移动运营商决定阻止传入的UDP流量或类似的东西,但我已经测试并尝试访问我的家庭服务器而不是前一个服务器,UDP数据包已经回归!
让我们总结一下:移动网络发送UDP数据包没有问题,但有些IP 将他们的回复数据包丢弃。我错过了什么吗?是否应该使用通用的UDP端口来防止这种情况发生?流行的UDP应用程序如何不遇到这样的问题?
答案 0 :(得分:2)
您没有确定您来自哪个承运人或国家/地区。但是许多移动网络实现carrier-grade-NAT(双NAT连接),这可能是根本原因。
您没有描述您正在使用的协议。但UDP协议在客户端和服务器之间可靠地工作的方式是客户端不指定在协议内响应的本地端口。相反,UDP服务器使用套接字API指示发送数据包的地址进行响应。 UDP客户端侦听从将消息发送到服务器的同一端口和套接字。