我在nexus上运行了一些代码 - 我有一个非常奇怪的问题。 “服务器”在手机加入的多播套接字上发送UDP数据包。手机接收并向多播组发送内容很好,但是当手机一次收到大量数据包时,它似乎会窒息。
例如,服务器偶尔会发送80个左右的512字节数据包。手机开始接收数据包,但是在第31个数据包(大约16KB的数据)接收挂起(表示套接字上没有任何内容。)我已经完成了wireshark测试和东西,所以我确定数据包不会丢失。即使有些丢失,很奇怪,每次测试都会产生相同的结果---大量数据一次被卡在套接字上,但套接字只允许我使用socket.receive()获得16KB的价值数据。
我已尝试使用各种值(最大1MB)的socket.setReceiveBufferSize() - 但这似乎不起作用。有趣的是,调用getReceiveBufferSize()告诉我套接字应该保存大约100KB的数据。
如果我告诉服务器减慢其发送方法(我无法部署,我只能用于测试目的) - 一切正常,大概是因为数据包没有一次卡在手机的套接字上(即我告诉服务器在数据包之间等待1/2秒。)
有没有其他人经历过这种情况 - 如果是这样的话 - 你是如何解决这个问题的?我无法将应用程序切换到TCP。
谢谢!
丹
PS。如果我在常规机器上运行它,Java代码可以正常工作......
答案 0 :(得分:0)
没关系 - 我通过移动到一个封闭的网络来修复它,那里有0可能丢失和奇怪的事情 - 不知道我所在的网络是什么(应该是goo) - 但至少它作品!
丹