Прослушивающий сокет UDP прекращает прослушивание после изменения конфигурации сети

У меня есть сокет UDP, который прослушивает порт для широковещательной передачи, и он работает нормально.

Однако, когда я перехожу в спящий режим и возобновляю работу ОС (Windows 7), сокет просто перестает получать данные (и я вижу, что данные поступают с использованием Wireshark).

Это также происходит, если я изменяю какие-либо сетевые настройки, например, изменить мой IP-адрес, отключить и включить сетевой адаптер.

Похоже, ОС отключает все сетевые адаптеры при переходе в спящий режим и повторно включает их при возобновлении.

select просто возвращает 0 (тайм-аут), который ничем не отличается от ситуации, когда я не получаю никаких данных. Я нигде не смог найти никаких ссылок на это поведение.

Если я закрою сокет и воссоздаю его заново, он снова начнет работать.

] Мои сокеты для прослушивания TCP все еще работают нормально после возобновления работы ОС.

Есть идеи, как обнаружить и исправить эту ситуацию?

ИЗМЕНИТЬ : Он по-прежнему получает данные с прямым адресом, просто он больше не принимает передачи по Brodcast.

РЕДАКТИРОВАТЬ2: Только что обнаружил, что если я пишу в сокет (отправляю фиктивный пакет куда угодно), он снова начинает работать ...

7
задан Vargas 11 November 2011 в 14:09
поделиться