2012-03-24 8 views
45

Ich muss wissen, wie man alle Netzwerkschnittstellen mit ihrer IPv4 Adresse erhält. Oder einfach nur drahtlos und Ethernet.Wie bekomme ich die Netzwerkschnittstelle und ihre richtige IPv4-Adresse?

foreach (NetworkInterface ni in NetworkInterface.GetAllNetworkInterfaces()) { 
    if(ni.NetworkInterfaceType == NetworkInterfaceType.Wireless80211 || 
     ni.NetworkInterfaceType == NetworkInterfaceType.Ethernet) { 

     Console.WriteLine(ni.Name); 
    } 
} 

Und um die alle bereitgestellten IPv4-Adressen des Computers:

Um alle Netzwerkschnittstellen Details ich diese verwenden bekommen

IPAddress [] IPS = Dns.GetHostAddresses(Dns.GetHostName()); 
foreach (IPAddress ip in IPS) { 
    if (ip.AddressFamily == AddressFamily.InterNetwork) { 

     Console.WriteLine("IP address: " + ip); 
    } 
} 

Aber wie die Netzwerk-Schnittstelle zu erhalten und ihre richtige IPV4-Adresse?

+1

Bitte lesen Sie ein etwas sorgfältiger. Siehe [GetIPProperties] (http://msdn.microsoft.com/en-us/library/system.net.networkinformation.networkinterface.getipproperties.aspx) –

+0

@JohnSaunders Okay, ich habe Ihren Link überprüft, es gelesen und es versucht. aber ich habe die IPV4 Adresse nicht bekommen !! wie 192.168.1.25 !! –

+3

Ok, es ist ein bisschen subtiler als ich dachte. Siehe [IPGlobalProperties.GetUnicastAddresses] (http://msdn.microsoft.com/en-us/library/system.net.networkinformation.ipglobalproperties.getunicastaddresses.aspx) –

Antwort

80
foreach(NetworkInterface ni in NetworkInterface.GetAllNetworkInterfaces()) 
{ 
    if(ni.NetworkInterfaceType == NetworkInterfaceType.Wireless80211 || ni.NetworkInterfaceType == NetworkInterfaceType.Ethernet) 
    { 
     Console.WriteLine(ni.Name); 
     foreach (UnicastIPAddressInformation ip in ni.GetIPProperties().UnicastAddresses) 
     { 
      if (ip.Address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork) 
      { 
       Console.WriteLine(ip.Address.ToString()); 
      } 
     } 
    } 
} 

Dies sollte Sie bekommen, was Sie wollen. IP-Adresse ist eine IP-Adresse, die Sie möchten.

+3

Dies kann mit [this] vereinfacht werden (https: // goo .gl/rmP8RO) Linq Abfrage. – Joseph

+0

@Joseph Ihr Link ist tot:/ – Felk

+1

@Felk Danke, das ist die ursprüngliche URL https://gist.github.com/anonymous/ff82643c9a004281544a – Joseph

1

Mit einigen Verbesserungen, fügt dieser Code eine beliebige Schnittstelle auf eine Kombination:

private void LanSetting_Load(object sender, EventArgs e) 
{ 
    foreach (NetworkInterface nic in NetworkInterface.GetAllNetworkInterfaces()) 
    { 
     if ((nic.NetworkInterfaceType == NetworkInterfaceType.Ethernet) || (nic.NetworkInterfaceType == NetworkInterfaceType.Wireless80211)) //&& (nic.OperationalStatus == OperationalStatus.Up)) 
     { 
      comboBoxLanInternet.Items.Add(nic.Description); 
     } 
    } 
} 

Und wenn einer von ihnen der Auswahl dieser Code gibt die IP-Adresse der Schnittstelle:

private void comboBoxLanInternet_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    foreach (NetworkInterface nic in NetworkInterface.GetAllNetworkInterfaces()) 
    { 
     foreach (UnicastIPAddressInformation ip in nic.GetIPProperties().UnicastAddresses) 
     { 
      if (nic.Description == comboBoxLanInternet.SelectedItem.ToString()) 
      { 
       if (ip.Address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork) 
       { 
        MessageBox.Show(ip.Address.ToString()); 
       } 
      } 
     } 
    } 
}