Найти через какое сетевое устройство пользователь подключен к интернету - PullRequest
1 голос
/ 02 апреля 2011

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

Private netIntrfc As NetworkInterface() = NetworkInterface.GetAllNetworkInterfaces()
For i As Integer = 0 To netIntrfc.Length - 1
  If netIntrfc(i).OperationalStatus = OperationalStatus.Up Then
    netDevicesList.Items.Add(netIntrfc(i).Name.ToString)
  End If
Next

Но моя проблема в том, как получить значение по умолчанию один, то есть ( Ethernet-адаптер ), через который пользователь подключен к Интернету?

Мне нужно изменить некоторые настройки по умолчанию ( через который пользователь подключен к интернету ) адаптер. Настройки, которые я изменяю через реестр, чтобы я мог добавить те же настройки для каждого сетевого интерфейса, но это может вызвать проблемы и не имеет смысла: D

Может кто-нибудь помочь? Спасибо! ;)

РЕДАКТИРОВАНИЕ:

на данный момент я сделал, как код ниже, так что если это может помочь кому-то другому ... :) но если у кого-то есть жидкое или более надежное решение, отправьте, пожалуйста,

Dim u As UdpClient = New UdpClient(System.Net.Dns.GetHostName, 1)
Dim localAddr As IPAddress = CType(u.Client.LocalEndPoint, IPEndPoint).Address

Private netIntrfc As NetworkInterface() = NetworkInterface.GetAllNetworkInterfaces()
For i As Integer = 0 To netIntrfc.Length - 1
  If netIntrfc(i).OperationalStatus = OperationalStatus.Up Then
    For Each uni As NetworkInformation.UnicastIPAddressInformation In ipProps.UnicastAddresses
      If uni.Address.ToString = localAddr.ToString Then
        netDevicesList.Items.Add("DEFAULT: " & netIntrfc(i).Name.ToString)
        DEFDEVID = netIntrfc(i).Id.ToString
      End If
    Next
    netDevicesList.Items.Add(netIntrfc(i).Name.ToString)
  End If
Next

Спасибо Томас-Ли и этот пост

Ответы [ 2 ]

1 голос
/ 02 апреля 2011

Это даст вам несколько советов?

Идентификация активного сетевого интерфейса

0 голосов
/ 13 апреля 2013

я портировал ваш код на c #, надеюсь, вы не против

    static void Main(string[] args)
    {
        UdpClient u = new UdpClient(System.Net.Dns.GetHostName(), 1);
        IPAddress localAddr = (u.Client.LocalEndPoint as IPEndPoint).Address;
        NetworkInterface[] netIntrfc  = NetworkInterface.GetAllNetworkInterfaces();
        for (int i = 0; i < netIntrfc.Length - 1; i++)
        {
            if (netIntrfc[i].OperationalStatus == OperationalStatus.Up) 
            {
                IPInterfaceProperties ipProps = netIntrfc[i].GetIPProperties();
                foreach (UnicastIPAddressInformation uni in ipProps.UnicastAddresses) 
                {
                    if (uni.Address.ToString() == localAddr.ToString()) 
                    {
                        Console.WriteLine("DEFAULT: " + netIntrfc[i].Name.ToString());
                        Console.WriteLine(netIntrfc[i].Id.ToString());
                    }
                }
            } 
        }
    }
...