我面临基于 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/