Android最大UDP包大小

时间:2011-07-18 13:29:57

标签: android udp client-server

我可以发送一个15,750字节(15K字节)的UDP数据包。当我从我的Android客户端应用程序发送超出此限制的数据包时,我无法在服务器上接收它。我无法在服务器上收到我发送的1字节数据来自client.Is这个最大限制?理论上UDP数据包支持65,535字节。我想知道实际限制是什么? 这是Android或移动或移动网络运营商的限制吗?

2 个答案:

答案 0 :(得分:0)

我猜你正在使用Java。您可能遇到http://docs.oracle.com/javase/6/docs/api/java/net/DatagramSocket.html#getSendBufferSize()

中详述的问题

我的Oracle Java 6 JVM上的SO_SNDBUF是4097字节,但实现至少在Windows上处理较大的。我不确定Android的实现。

你至少知道最小值是500字节。我忘了这个参考。

答案 1 :(得分:0)

我知道这个问题很老,但是当您在 google 上搜索 UDP 数据包传输问题时,它会显示为第一个链接。如果有人有类似的问题,这是我发现的:

问题描述如下:RFC 1191 - Path MTU Discovery。 65,535 是理论大小:这是可以存储在 UDP 标头(16 位)的 Length 字段中的最大值。实际上,并非所有网络成员都能处理这么大的数据包。

这里也有很好的解释:Path MTU discovery in practice

<块引用>

一种常用的解决方法是减少所有传出数据包的 MTU。所有 IPv6 主机所需的最小 MTU 是 1,280,这是公平的。不幸的是,对于 IPv4,该值为 576 字节。 另一方面,RFC4821 表明假设最小 MTU 为 1,024“可能足够安全”。 [...] 强制减小数据包大小并不是最佳解决方案。

本文后面还会介绍一些更高级的技术。