2011-10-27 57 views
2

我有一个通过UDP发送数据的应用程序。 我试图找出什么是最大/最优的发送缓冲区大小。 我已经成功发送了一个2k包,但更大的包是一个问题。 我试过使用getSendBufferSize来查看发送缓冲区的大小。它返回了110592个字节。 当我尝试发送任何接近它的东西时,我没有收到错误,但数据剂量到达服务器。Android - 发送DatagramSocket最大缓冲区大小

我怎么知道什么是“允许的”发送缓冲区大小?

谢谢。

回答

2

DatagramPacket只是基于UDP套接字的包装,所以通常的UDP规则适用。

64千字节是一个完整的IP数据报的理论最大尺寸,但只有576字节保证被路由。在任何给定的网络路径上,具有最小最大传输单元的链路将确定实际限制。 (1500个字节,少报头是通用最大的,但它是无法预测有多少头会有那么它的最安全的消息限制在约1400个字节)。

参考:Java DatagramPacket (UDP) maximum send/recv buffer size

+0

感谢您参考网址 – Amos

0

我也已经遇到此错误,应为65535 - 28 = 65507字节,用于DatagramPacket发送方法的参数“缓冲区”大小。