Захват события изменения состояния сети - PullRequest
3 голосов
/ 20 января 2010

Я пытаюсь получить события, когда интернет-соединение восстанавливается после того, как оно потеряно.Я разрабатываю программное обеспечение для передачи данных.Если я потеряю сеть во время передачи данных, я хотел бы получить уведомление, когда она вернется, и продолжить передачу автоматически.

Конечно, я могу создать отдельный поток и время от времени проверять сеть с помощью таймера., но, возможно, есть лучший вариант там.

Я разрабатываю в основном для Windows, на C ++ (не .net).

Я также могу использовать wxwidgets (я использую его для графического интерфейса), но я сомневаюсь, что он предлагает какую-либо связанную функциональность.

Ответы [ 3 ]

2 голосов
/ 21 января 2010

Возможно, вы захотите проверить API сервера уведомлений о системных событиях (SENS) http://msdn.microsoft.com/en-us/library/cc185680(VS.85).aspx

Я на самом деле не использовал его, но, похоже, он предоставляет события, которые вы ищете.

EDIT:

WMI обладает всей необходимой информацией о различных сетевых подключениях и изменениях состояния. Он также имеет асинхронную модель событий, которую можно использовать для получения уведомлений. Уловка, я полагаю, генерирует правильный запрос WMI, чтобы получить необходимую информацию. Этот блог выглядит как правильный тип запроса, а этот MSDN объясняет, как обрабатывать события асинхронно.

0 голосов
/ 04 мая 2014

Эта ссылка MSDN дает очень подробный пример того, как захватывать события в WMI с COM. Пример на самом деле не фиксирует сетевые события - но я считаю, что если вы подключите правильный запрос, он будет работать.

(здесь много кода, поэтому я не копирую его в ответ) http://msdn.microsoft.com/en-us/library/aa390425%28v=vs.85%29.aspx

0 голосов
/ 20 января 2010

Я не знаю, какой протокол вы используете и можете ли вы контролировать пункт назначения, но в этом случае пункт назначения может запросить повторную попытку. Адресат лучше всего знает, что он получил, поэтому он может передать полученное количество байтов в качестве смещения для повторной передачи.

...