Что будет с существующими соединениями при переключении между 3g / wifi - PullRequest
18 голосов
/ 18 августа 2010

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

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

Заранее спасибо.

Хунбо

Ответы [ 3 ]

9 голосов
/ 18 августа 2010

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

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

1 голос
/ 18 августа 2010

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

0 голосов
/ 22 апреля 2015

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

...