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