У меня есть сокет UDP, который прослушивает порт для широковещательной передачи, и он работает нормально.
Однако, когда я перехожу в спящий режим и возобновляю работу ОС (Windows 7), сокет просто перестает получать данные (и я вижу, что данные поступают с использованием Wireshark).
Это также происходит, если я изменяю какие-либо сетевые настройки, например, изменить мой IP-адрес, отключить и включить сетевой адаптер.
Похоже, ОС отключает все сетевые адаптеры при переходе в спящий режим и повторно включает их при возобновлении.
select
просто возвращает 0
(тайм-аут), который ничем не отличается от ситуации, когда я не получаю никаких данных. Я нигде не смог найти никаких ссылок на это поведение.
Если я закрою сокет и воссоздаю его заново, он снова начнет работать.
] Мои сокеты для прослушивания TCP все еще работают нормально после возобновления работы ОС.
Есть идеи, как обнаружить и исправить эту ситуацию?
ИЗМЕНИТЬ : Он по-прежнему получает данные с прямым адресом, просто он больше не принимает передачи по Brodcast.
РЕДАКТИРОВАТЬ2: Только что обнаружил, что если я пишу в сокет (отправляю фиктивный пакет куда угодно), он снова начинает работать ...