Много статей не имеет срока устаревания. Есть смысл смотреть и 2011, и даже 2008 год. Политика сайта: написать статью, а потом обновлять ее много лет.
Открыта карта ВТБ для материальной поддержки сайта: 5368 2902 0040 0838.

Рекламодателям! Перестаньте спамить мне на почту с предложениями о размещении рекламы на этом сайте. Я никогда спамером/рекламщиком не был и не буду!
" title="Написать письмо">Написать письмо

Статистика

Пользователи : 1
Статьи : 1362
Просмотры материалов : 5080845
 
Получение статуса подключения к ЛВС (27.08.2019). Печать E-mail
2019 - Август
27.08.2019 18:15
Save & Share
Возникла задача программно проверить: включено ли хоть одно сетевое подключение на аппаратуре. Реализация - на Borland C++ Builder v.6.0.

Искал самый простой способ. На форумах - только "спасите-помогите", но не решение по вопросу (было решение на несколько листов формата A4, что не устраивало). Плюс показана общая глючность работы функций Windows с состоянием сетевых карт. Однако одно такое "спасите-помогите" удалось мутировать в рабочий код.

Инкдуд: #include <WinInet.h>.
Библиотека, подключаемая в проект: WinInet.lib весом 21504б;

Исходный код:
DWORD dwFlag_Returned; //Бросовая переменная.
bool bResult= InternetGetConnectedState(&dwReturnedFlag, 0); //Подлючено - true. 0 - похож на номер сетевого подключения в системе.

Проблемы:
- возможны задержки отображения измененного состояния до 1 минуты (показывает true вместо false);
- при нескольких сетевых картах баг: подключенная карта становится нулевой.

(добавлено 03.08.2020) Более глубокое тестирование сетевых подключений требует и анализа второго параметра dwReserved.

Опытным путем установлено, что статус подключения при использовании данной функции всегда запаздывает примерно на минуту.

(добавлено 05.08.2020) Корректная работа функции возможна только при включенной службе SENS (зависящей от службы EventSystem).

(добавлено 07.08.2020) На виртуальной машине данный способ не работает: все время дает ложный результат, что подключение активно (проверено на Windows 2000).

Параметр dwReserved всегда должен быть равен 0.
Обновлено ( 07.08.2020 17:14 )
 
 

Последние новости


©2008-2020. All Rights Reserved. Разработчик - " title="Сергей Белов">Сергей Белов. Материалы сайта предоставляются по принципу "как есть". Автор не несет никакой ответственности и не гарантирует отсутствие неправильных сведений и ошибок. Вся ответственность за использование материалов лежит полностью на читателях. Размещение материалов данного сайта на иных сайтах запрещено без указания активной ссылки на данный сайт-первоисточник (ГК РФ: ст.1259 п.1 + ст.1274 п.1-3).