2011-09-30 45 views
0

我有一臺Java網絡服務器在專用服務器上在線運行,並且我有一個使用Android SDK和Java編寫的Android網絡客戶端。Android客戶端套接字隨機關閉,如果使用3G連接,而不是WiFi連接

如果Android設備與WIFI連接,它工作正常,但如果我使用3G連接設備,當我從客戶端撥打readInt()時,套接字會關閉。這並不是在第一次電話會議上發生,但稍後。它看起來非常隨機,而且很難解釋,但是當沒有數據再被讀取(或沒有)時可能會發生。例外是SocketException connection reset by peer

我想更具體地解釋一下,但它很難調試,而且從我的角度來看,它看起來像一個Android bug(不確定)。這就是爲什麼我問這個問題。因爲肯定有人遇到了同樣的問題。

Android設備的WIFI連接和3G連接有什麼區別,會產生這樣的斷開連接?什麼可能是一個解決這個問題?

如果有人可以幫忙,謝謝。

編輯:我的3G連接沒有中斷。它是插座,只有插座。而且只有在3G中連接纔會發生。不在WIFI。

+0

我不知道你的服務,但我的3G不斷下降。當您重新連接到3G熱點時,您的DHCP租約是不是續約?會導致一個新的IP,如此不同的分組數據。不會重新連接到相同的套接字。 – stslavik

+0

是的,你可能會從一個塔切換到另一個,這可能會降低你的cxn(未驗證)。 – Jack

回答

0

我找到了答案:幾個3G網絡提供商關閉他們的顧客的插座爲了獲得更多利潤。唯一的解決辦法是人爲地減慢交通。

1

您的連接可能會中斷,在這種情況下,您之前創建的套接字已損壞/關閉。 我建議你聽網絡改變意圖「android.net.conn.CONNECTIVITY_CHANGE」,並重新設置您的套接字,每次網絡有變化。這應該解決您的問題