2012-11-01 14 views
6

Mam problem z synchronizacją "adresu IP i opisu".Uzyskaj adres IP i opis adaptera za pomocą C#

Celem jest taka:

Uzyskaj adres IP i jaki jest opis?

Przykład:

| Atheros Azx1234 Wireless Adapter | 

|192.168.1.55      | 

Ale wynik nie jest to, czego się spodziewałem ...

To jest mój kod nie krępuj się próbować ...

private void button1_Click(object sender, EventArgs e) 
{ 
    NetworkInterface[] interfaces = NetworkInterface.GetAllNetworkInterfaces(); 
    IPHostEntry host; 
    host = Dns.GetHostEntry(Dns.GetHostName()); 

    foreach (NetworkInterface adapter in interfaces) 
    { 
     foreach (IPAddress ip in host.AddressList) 
     { 
      if ((adapter.OperationalStatus.ToString() == "Up") && // I have a problem with this condition 
       (ip.AddressFamily == AddressFamily.InterNetwork)) 
      { 
       MessageBox.Show(ip.ToString(), adapter.Description.ToString()); 
      } 
     } 
    } 
} 

Jak mogę naprawić ten problem?

+0

Próbowałem swój kod i to działa, można wyjaśnić ten problem bardziej szczegółowo? –

+0

Nie sądzę, że wystąpił problem z kodem, który opublikowałeś. Udało mi się uzyskać mój lokalny adres IP z każdego urządzenia sieciowego działającego w moim systemie :) –

+0

problem występuje, gdy mamy wiele kart internetowych .. –

Odpowiedz

12

Problem w kodzie polega na tym, że nie są używane powiązane adresy IP dla danego adaptera. Zamiast dopasowując wszystkie adresy IP dla każdego adaptera używać tylko adresy IP związane z bieżącym adaptera:

NetworkInterface[] interfaces = NetworkInterface.GetAllNetworkInterfaces(); 
foreach (var adapter in interfaces) 
{ 
    var ipProps = adapter.GetIPProperties(); 

    foreach (var ip in ipProps.UnicastAddresses) 
    { 
     if ((adapter.OperationalStatus == OperationalStatus.Up) 
     && (ip.Address.AddressFamily == AddressFamily.InterNetwork)) 
     { 
      Console.Out.WriteLine(ip.Address.ToString() + "|" + adapter.Description.ToString()); 
     } 
    } 
} 
+0

To musi być rozwiązanie, to jest to +1 –

+0

Dziękuję za tę odpowiedź @hans ... –

+0

** @ Hans: Mam dla Ciebie 2 pytania 1. w jaki sposób możemy zapobiec wyświetleniu podglądu adresu Loopback w oknie komunikatu? 2. Jak mogę przyjąć twoją odpowiedź? lol ** –

Powiązane problemy