Клиентское гнездо Android закрывается случайным образом ТОЛЬКО при использовании подключения 3G, а не подключения Wi-Fi - PullRequest
0 голосов
/ 01 октября 2011

У меня есть сетевой сервер Java, работающий в режиме онлайн на выделенном сервере, и у меня есть сетевой клиент Android, написанный на Android SDK и java.

Работает нормально, если устройство Android подключено к WIFI, но если я подключаю устройство через 3G, сокет закрывается, когда я звоню: readInt() с клиента. Это не происходит при первом звонке, но позже. Это выглядит очень случайным, и это трудно объяснить, но это может произойти, когда больше нет данных, которые слишком читаются (или нет). Исключение составляет SocketException connection reset by peer.

Я хотел бы объяснить более конкретно, но отладку очень сложно, и, на мой взгляд, это похоже на ошибку Android (не уверен в этом). И именно поэтому я задаю этот вопрос. Потому что наверняка кто-то сталкивался с той же проблемой.

В чем может быть разница между соединением WIFI и соединением 3G для устройства Android, которое может вызвать такое отключение? Что может быть исправлением для этого?

Спасибо, если кто-нибудь может помочь.

Редактировать: мое соединение 3G НЕ разрывается. Это сокет, который клюет, и только сокет. И это только происходит, если я подключаюсь в 3G. Не в WIFI.

Ответы [ 2 ]

1 голос
/ 01 октября 2011

Возможно, ваше соединение разрывается, в этом случае сокет, который вы создали ранее, поврежден / закрыт. Я бы посоветовал вам выслушать намерение изменить сеть "android.net.conn.CONNECTIVITY_CHANGE" и переустанавливать сокет каждый раз, когда происходит изменение в сети. Это должно исправить вашу проблему

0 голосов
/ 19 октября 2011

Я нашел ответ: несколько провайдеров сетей 3G закрывают розетки своих клиентов, чтобы получить больше прибыли. Единственное решение - искусственно замедлить движение.

...