84 votes

comment obtenir l'interface réseau et sa bonne adresse ipv4?

J'ai besoin de savoir comment obtenir chaque interface réseau avec son adresse ipv4. ou simplement sans fil et ethernet.


Je sais que si je veux obtenir tous les détails des interfaces réseau, j'utilise ceci:

 foreach (NetworkInterface ni in NetworkInterface.GetAllNetworkInterfaces())
        {
           if(ni.NetworkInterfaceType == NetworkInterfaceType.Wireless80211 || ni.NetworkInterfaceType == NetworkInterfaceType.Ethernet)
             {
                  Console.WriteLine(ni.Name);
             }  
        }
 

et pour obtenir toutes les adresses ipv4 hébergées de l'ordinateur

         IPAddress [] IPS = Dns.GetHostAddresses(Dns.GetHostName());
        foreach (IPAddress ip in IPS)
        {
            if (ip.AddressFamily == AddressFamily.InterNetwork)
                Console.WriteLine("IP address : " + ip);
        }
 

mais comment obtenir l'interface réseau et sa bonne adresse ipv4?

129voto

bwall Points 479
 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());
           }
       }
   }  
}
 

Cela devrait vous donner ce que vous voulez. ip.Address est une adresse IP que vous souhaitez.

3voto

Hady Mahmoodi Points 49

avec quelques améliorations ce code ajoute une interface à un combo

  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);
            }
        }
    }
 

et quand sélectionnez l'un d'eux ce message de code ip de l'interface

  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());
                    }
                }
            }
        }
    }
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X