2010-07-15 52 views
0

我在nexus上運行了一些代碼 - 我遇到了一個很奇怪的問題。 「服務器」通過手機加入的組播套接字發送UDP數據包。手機收到並向組播組發送東西,但是看起來電話一旦收到大量數據包就會窒息。Android多播套接字問題

例如,服務器偶爾會發送80個左右的512字節數據包。手機開始接收數據包,但在第31個數據包(大約16KB數據)時,接收掛起(表明套接字上沒有任何東西)。我做了wireshark測試和東西,所以我確信數據包不會丟失。即使有一些丟失了,很奇怪每次測試都會產生相同的結果 - 一次有大量數據卡在套接字上,但是套接字只允許我以socket.receive()方式承載16KB的值數據的。

我試過socket.setReceiveBufferSize()與各種值(高達1MB) - 但似乎並沒有工作。有趣的是,調用getReceiveBufferSize()告訴我套接字應該保存大約100KB的數據。

如果我告訴服務器放慢它的發送方法(我不能部署,我只能用於測試目的) - 一切正常,大概是因爲數據包沒有一個卡在手機的socket上時間(即,我告訴服務器在數據包之間等待1/2秒)。

是否有其他人遇到過這種情況 - 如果是的話 - 您是如何解決這個問題的?我不能切換到TCP應用程序。

謝謝!

PS。 Java代碼工作正常,如果我在普通機器上運行它...

回答

0

沒關係 - 我通過移動到一個封閉的網絡,其中有0可能性損失和奇怪的事情 - 不知道什麼是與我在網絡上(本來應該是咕 - ) - 但至少它工作正常!