Что произойдет с сокетом сервера TCP / UDP, когда я переключу сеть Wi-Fi? - PullRequest
2 голосов
/ 02 декабря 2011

что произойдет с серверным сокетом в моем приложении, когда я внезапно изменю сеть Wi-Fi?Я предполагаю, что он выключится, так как мое устройство получит новый IP, по крайней мере в TCP, склонен ли к этому UDP MulticastSocket?И как завершить предыдущий поток сокета сервера и начать новый, когда сеть меняется?Одно решение использует тайм-ауты, другое использует флаг, который будет указывать, должен ли бесконечный цикл заканчиваться или нет, но поскольку прослушивание сокета является блокирующей функцией, оно в любом случае вызовет исключение / ошибку.

Любые мыслибудет оценено!:)

РЕДАКТИРОВАТЬ: образец потока моего сервера.

ServerSocket ss = new ServerSocket(4445);
while(true){
    Socket socket = ss.accept();
    ObjectInputStream in  = new ObjectInputStream(socket.getInputStream());
    Object obj = in.readObject();
    Log.i("TAG", "Received: " + obj.toString());
    in.close();
    socket.close();
}

Ответы [ 2 ]

3 голосов
/ 02 декабря 2011

Соединение TCPIP будет разорвано. Таким образом, клиенту пришлось бы подключиться снова.

UDP будет в порядке, если ваш IP-адрес не изменится после переподключения. Конечно, если вы передадите UDP, это не будет иметь никакого значения для этой машины.

В случае TCPIP вы должны получить исключение, которое вы можете обработать.

1 голос
/ 02 декабря 2011

UDP-сокеты, которые не привязаны к адресу, останутся открытыми, так как они не сохраняют состояния.Прослушивающие сокеты TCP, не связанные с адресом, также останутся открытыми.

Подключенные сокеты TCP могут быть отключены (RST) или просто задерживаться до истечения времени ожидания.

Это малоизвестный факт, чтоIP предписывает, что устройство по умолчанию будет принимать пакеты, направленные на любой адрес, который оно настроило на любом интерфейсе, независимо от того, на какой интерфейс поступает пакет.Если бы это было не так, маршрутизация была бы нарушена.Можно использовать фильтры пакетов для фильтрации пакетов с несоответствующими адресами в зависимости от интерфейса.

...