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