Определение состояния сети (подключено - отключено) в C #

Мне нужен фрагмент кода, который может определить, подключено или отключено сетевое соединение. Состояние подключения означает, что кабель подключен к Ethernet-соединению. Состояние отключения означает, что кабель не подключен.

Я не могу использовать интерфейс WMI из-за того, что я работаю на Windows CE. Я не против вызова Win32 API, но помню, что я использую Windows CE и работаю на Compact Framework.


person Bobby Cannon    schedule 01.06.2009    source источник
comment
Следует помнить, что сетевое соединение не равно Интернет-соединению. Похоже, вы уже это поняли, потому что вы определяете подключено как означающее, что кабель подключен к Ethernet-соединению, но это требует повторения.   -  person Joel Coehoorn    schedule 19.02.2014


Ответы (4)


Ознакомьтесь с этой статьей MSDN:

Тестирование сетевых подключений и ответ на них в .NET Compact Framework

person TWA    schedule 01.06.2009
comment
Решение, на которое указывает ссылка, не будет определять наличие кабеля или нет - оно определяет, доступен ли хост. Как отмечает Джоэл, это две совершенно разные вещи. - person ctacke; 02.06.2009

Самый простой способ - использовать SDF OpenNETCF и просмотреть OpenNETCF.Net.NetworkInformation.NetworkInterfaceWatcher class, который будет вызывать события, когда NDIS отправляет уведомления. (например, MEDIA_CONNECT и MEDIA_DISCONNECT).

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

person ctacke    schedule 01.06.2009
comment
Привет, я загрузил двоичные файлы 2.3 с opennetcf.codeplex.com/releases/view/137461 но я не могу найти AdapterStatusMonitor в пространстве имен OpenNETCF.Net ... Я что-то упустил? Спасибо! - person franDayz; 05.02.2016
comment
Взгляните на NetworkInterfaceWatcher opennetcf.codeplex. com / SourceControl / latest # OpenNETCF.Net / - person ctacke; 06.02.2016

Вызовите GetAdaptersInfo и пролистайте список доступных сетевых адаптеров, пока не найдете тот, который вы ищете?

person Tom van Enckevort    schedule 01.06.2009

Следует помнить, что сетевое соединение не равнозначно интернет-соединению.

Похоже, вы это уже поняли, потому что вы определяете «подключено» как означающее «кабель подключен к Ethernet-соединению», но это стоит повторить.

person Community    schedule 01.06.2009
comment
Да, я это понимаю. Я действительно хочу просто определить состояние подключения кабеля. - person Bobby Cannon; 01.06.2009
comment
@ kelton52 Согласен. Правила изменились с июня 2009 года :) Я добавил комментарий, через несколько минут удалю его. - person Joel Coehoorn; 19.02.2014