我正在尝试设置/增加数据报套接字的接收缓冲区大小。我想这样做,因为我在PC和位于同一本地网络的Android设备之间发送数据时遇到一些随机丢包,我想测试增加缓冲区大小是否会对减少此UDP有任何影响数据包丢失。我正在尝试使用以下代码设置缓冲区大小。
DatagramSocket socket = new DatagramSocket();
socket.setReceiveBufferSize(655360);
然后再开始(在我开始从套接字读取之前)我检查接收缓冲区大小如下:
Log.i(TAG, "Size: " + socket.getReceiveBufferSize());
但是,日志消息始终显示缓冲区大小为163840。 这段代码有什么问题?我应该以另一种方式设置接收缓冲区大小。
由于
答案 0 :(得分:3)
日志消息始终显示缓冲区大小为163840。
这就是平台给你的东西。
此代码有什么问题?
无。你需要阅读Javadoc。平台可以调整您提供或减少的值。 “因为SO_RCVBUF
是一个提示,想要验证缓冲区设置大小的应用程序应该调用getReceiveBufferSize().
”
您不需要640k的套接字接收缓冲区。数据包丢失主要发生在网络中,如果您阅读速度慢,则仅发生在目标上。