安卓UDP数据包丢失

3
我在索尼Xperia Z平板上收udp数据包时遇到了奇怪的问题。我的应用程序并没有收到很多udp数据包。所以,我已经rooted设备来安装shark应用程序,并通过shark应用程序捕获网络流量。当我分析报告时,发现设备已经收到了所有的数据包,但是我的应用程序却没有收到其中许多数据包。如果应用程序没有收到任何数据包,则可能是阻止广播数据包的数据包过滤器的问题。在这里,我的应用程序接收了一些数据包,但错过了设备接收到的数据包。我没有观察到三星Tab 2和摩托罗拉Xoom平板存在这个问题,它们可以收到所有的数据包。这听起来不像是代码问题。有人遇到类似的问题吗?如果您有任何建议或输入,我会很感激。
更新: 我已经添加了我的评论如下。

http://stackoverflow.com/questions/15825298/android-udp-packet-loss - Amit Prajapati
我的应用程序需要接收大小为64字节的UDP数据包。问题不在于它丢失了所有数据包,而是丢失了一些数据包,但是当我使用Shark应用程序捕获设备的网络流量时,发现设备确实接收到了这些数据包。看起来Android操作系统没有将这些数据包从WiFi网络缓冲区发送到我的应用程序。 - jkstar
2个回答

3

2

我发现我的应用程序错过了设备接收到的一些数据包。我将数据报套接字接收器缓冲区大小设置为较小的值。我删除了这段代码设置缓冲区大小,然后它开始接收所有数据包。默认情况下,Android将缓冲区大小设置为163840B,但我将其大小设置为64字节。使用Android设置的默认缓冲区大小效果很好。


我在1秒的间隔内收到了两条消息!!不幸的是,其中一条丢失了。有什么帮助吗? - George Thomas

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