java - Android 上丢失 UDP 套接字数据包

标签 java android sockets

我面临基于 Android 设备的 UDP 数据包丢失问题。我有两个设备。以下代码在一台设备上可以正常运行。另一台设备丢失了许多包裹。我已经读过solution of similar problem 。在此解决方案中,建议将数据报套接字大小设置为 64k。但我无法设置它。

如何更改数据报缓冲区大小?

我的代码:

DatagramSocket udpSocket = null;
try {
    udpSocket = new DatagramSocket(5004);
    udpSocket.setReceiveBufferSize(64*1024);
    Log.d("UDPSocket", "Buffer Size : " + udpSocket.getReceiveBufferSize());
} catch (SocketException e1) {
    e1.printStackTrace();
}

日志:

05-14 10:34:05.960: D/UDPSocket(28021): Buffer Size : 112640

最佳答案

所选答案的作者似乎在使用过去时态和几乎所有时间都用现在时说话方面存在问题,但在某一时刻他确实说

I removed this code setting buffer size and then it strated receving all the packets

所以实际上它正在改变数据报缓冲区大小,这似乎导致了它的问题。

顺便说一句,您设置缓冲区大小的方法可能有效,事实上日志消息会用您的平台缓冲区大小响应您,您无法更改,请参阅Android DatagramSocket receive buffer size .

关于java - Android 上丢失 UDP 套接字数据包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23649120/

相关文章:

java - 类型不匹配 : cannot convert from AwsClientBuilder to AmazonCloudFormation

java - 如何在 XML 配置中注入(inject) Autowired beans?

Android WebView 缩放字体大小

java - Robotium - 如何截取屏幕截图并从测试用例内部打开

java - 服务器和客户端之间的 Java 版本在处理套接字时会导致问题吗?

java - 有什么方法可以区分连接超时和套接字超时吗?

Java8 Hashmap 在返回常量哈希码的情况下重新哈希

Java 无法保存我的输入。看我的代码

android - 如何让 `scrollbar`出现在左侧?

c - 我已经使用 ifconfig 将以太网和 Wifi 设置为混杂模式,但我仍然只收到来自和发送到我的计算机的数据包