安卓 - 发送DatagramSocket的最大缓冲区大小

3
我有一个通过UDP发送数据的应用程序。 我试图找出最大/最佳的发送缓冲区大小。 我已成功发送了2k大小的数据包,但更大的数据包是一个问题。 我尝试使用getSendBufferSize来查看发送缓冲区的大小。它返回110592字节。 当我尝试发送接近该大小的任何内容时,我没有收到错误,但数据并没有到达服务器。
我如何知道“允许”的发送缓冲区大小?
谢谢。
2个回答

2
DatagramPacket只是基于UDP的套接字的包装器,因此通常适用UDP规则。
64 KB是完整IP数据报的理论最大大小,但只保证路由576字节。在任何给定的网络路径上,具有最小传输单位的链路将确定实际限制。(通常最大为1500字节,减去头文件,但无法预测会有多少头文件,因此最安全的做法是将消息限制在约1400字节左右。)
参考资料:Java DatagramPacket (UDP) maximum send/recv buffer size

1

我也遇到了这个错误,应该是65535-28=65507字节,对于DatagramPacket send方法的参数“buffer”大小。


https://dev59.com/-HNA5IYBdhLWcg3wEpkU#38742429 - Amos
1
65507是关于UDP负载的,65515是关于UDP数据报的,这是我对它的解释,看看是否有帮助?@JinKwon - Amos

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接