2014-07-13 6 views
0

J'utilise ce code pour trouver toutes les adresses IP de toutes les interfaces:C# obtenir toutes les adresses IP locale

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

Le problème est sur certains PC, il montre l'ip 169.254.x.x (je sais que c'est le « défaut » adresse ip .. inutile ici.)

si je fais ipconfig /all je ne vois pas cette adresse IP, mais la vraie question est comment puis-je éviter de montrer cette adresse IP?

+0

Pouvez-vous envoyer votre code initialisant 'ni'? –

+0

fait mais Joachim a trouvé une solution .. merci quand même – Atomico

Répondre

3

Dans ce cas, il semblerait bon d'utiliser IsDnsEligible pour éliminer les adresses IP automatiques;

foreach (UnicastIPAddressInformation ip in ni.GetIPProperties().UnicastAddresses) 
{ 
    if(!ip.IsDnsEligible) 
     continue; 

    if (ip.Address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork) 
    { 
    ... 
+1

travailler comme un charme .. merci – Atomico

Questions connexes