我有一个通过 UDP 发送数据的应用程序。我试图找出最大/最佳发送缓冲区大小是多少。我已经成功发送了一个 2k 包,但是更大的包是个问题。我尝试使用 getSendBufferSize 来查看发送缓冲区大小。它返回 110592 字节。当我尝试发送任何接近它的东西时,我没有收到错误,但数据不会到达服务器。
我怎么知道“允许的”发送缓冲区大小是多少?
谢谢。
DatagramPacket 只是基于 UDP 的套接字的包装器,因此适用通常的 UDP 规则。
64 KB 是完整 IP 数据报的理论最大大小,但只能保证路由 576 字节。在任何给定的网络路径上,具有最小最大传输单元的链路将确定实际限制。(1500 字节,较少的标头是常见的最大值,但无法预测会有多少标头,因此将消息限制在 1400 字节左右是最安全的。)
我也遇到过这个错误,应该是65535 - 28 = 65507字节,对于DatagramPacket发送方法的参数“缓冲区”大小。