VS 2008
Я занимаюсь разработкой приложения, которое должно определять наличие подключения клиента к сети. т.е. кабель локальной сети подключен или беспроводной включен. Я использовал код ниже.
Я использую событие NetworkAvailabilitychangedEvent, чтобы инициировать событие, когда беспроводное соединение отключено или кабель был отключен. Однако это работает только в том случае, если у пользователя имеется только 3 подключения (LAN, Wireless и loopbacks).
Microsoft: «Сеть доступна, когда хотя бы один сетевой интерфейс помечен как« вверх »и не является туннельным или петлевым интерфейсом».
Однако у некоторых клиентов более 3 подключений. У одного клиента было соединение Bluetooth, а у другого - несколько соединений VMWare. На этих клиентах не удалось запустить событие.
Могу ли я в любом случае игнорировать все эти соединения, которые я не заинтересован в прослушивании, и просто слушать в локальной сети и по беспроводной сети?
Большое спасибо за любой совет,
private void Form1_Load(object sender, EventArgs e)
{
NetworkChange.NetworkAvailabilityChanged += new NetworkAvailabilityChangedEventHandler(OnNetworkChangedEvent);
}
private void OnNetworkChangedEvent(object sender, NetworkAvailabilityEventArgs e)
{
bool available = e.IsAvailable;
NetworkInterface[] networkConnections = NetworkInterface.GetAllNetworkInterfaces();
foreach (NetworkInterface ni in networkConnections)
{
if (ni.Name == "Local Area Connection")
{
if (ni.OperationalStatus == OperationalStatus.Down)
{
Console.WriteLine("LAN disconnected: " + ni.Description);
}
}
else if (ni.Name == "Wireless Network Connection")
{
if (ni.OperationalStatus == OperationalStatus.Down)
{
Console.WriteLine("Wireless disconnected: " + ni.Description);
}
}
}
}