Подтвердить что ты не робот

Что произойдет с существующими соединениями при переключении между 3g/wifi

Предположим, что у меня есть TCP-соединение, которое делает тяжелую передачу данных в моей сети 3G; и я пошел домой, Android переключился на мой домашний Wi-Fi автоматически. Теперь, что случилось с существующей связью? это просто отключить? или он будет продолжаться, только новые соединения будут использовать wifi?

Кроме того, что, если я ухожу от дома, wifi потерял сигнал и переключился на 3g? Должно быть безопасно угадать, что соединение удалено. Для моего приложения мне нужно обработать повторное соединение или есть решение для автоматического возврата обратно?

Спасибо заранее.

Хунбо

4b9b3361

Ответ 1

Соединение исчезнет, ​​потому что ваше устройство будет отображаться на другом IP-адресе, каким образом TCP-пакеты находят свой путь.

Нет резервной копии, если вы ее не закодируете, что вам следует делать в любом случае, если ваше приложение тратит много времени на 3G. Это вполне нормально для настольных приложений, чтобы пойти "D'oh!" когда ваш кабель или DSL имеет случайную икоту, но 3G-соединения снижаются в обычном режиме.

Ответ 2

То же самое произойдет, как если бы вы подключили ноутбук из одной сети и подключили другой. Соединения будут падать. Мобильные приложения гораздо чаще сталкиваются с потерянными/мертвыми соединениями, поэтому их следует кодировать соответствующим образом. Например, приложения могут регистрироваться для изменений статуса через android.net.ConnectivityManager. В некоторых случаях приложениям может потребоваться выполнить проверку целостности на все, что они загружают, чтобы они не начали пытаться отобразить разбитый файл. В других случаях было бы плохой способ загрузки определенных видов данных (например, больших файлов), если соединение осуществляется через 3G.

Ответ 3

Ничего. Вы должны перечислять все текущие IP-адреса и связывать их с каждым из них в разных сокетах. Подпишитесь на уведомления о достижимости (своего рода для Android) при изменении состояния сети/IP-адресов. Код должен работать и на Android. См. Мой многолучевой пример в этом контексте: https://gist.github.com/avesus/fdb465b60a4f5204845c