2016-06-22 1 views
-1

Existe-t-il un moyen fiable d'obtenir l'adresse IPv4 de la première interface Ethernet locale en C#?Obtenir l'adresse IP locale de l'interface ethernet en C#

foreach (NetworkInterface nic in NetworkInterface.GetAllNetworkInterfaces()) 
{ 
    if (nic.NetworkInterfaceType == NetworkInterfaceType.Ethernet) 
    {... 

Ceci trouve l'adresse IP locale associée à l'adaptateur Ethernet mais aussi trouver l'adaptateur Npcap Bouclage (installé pour une utilisation avec Wireshark).

De même, il semble y avoir aucun moyen de faire la différence entre l'adresse et l'adresse rebouclage Ethernet en utilisant le code suivant:

var host = Dns.GetHostEntry(Dns.GetHostName()); 
foreach (var ip in host.AddressList) 
{.... 

Toutes les autres suggestions?

+0

Cela explique comment obtenir l'adresse du nom d'hôte de la machine. http://stackoverflow.com/questions/9855230/how-do-i-get-the-network-interface-and-its-right-ipv4-address (qui pourrait être plus important que le premier adaptateur) – ebyrob

+0

Cela n'aide pas. Il donne les deux adresses (l'adresse de la carte Ethernet et l'adresse de bouclage Npcap). –

Répondre

1

Le code suivant obtient l'adresse IPv4 de l'interface préférée. Cela devrait également fonctionner à l'intérieur des machines virtuelles.

using System.Net; 
using System.Net.Sockets; 

public static void getIPv4() 
    { 
     try 
     { 
      using (Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, 0)) 
      { 
       socket.Connect("10.0.1.20", 1337); // doesnt matter what it connects to 
       IPEndPoint endPoint = socket.LocalEndPoint as IPEndPoint; 
       Console.WriteLine(endPoint.Address.ToString()); //ipv4 
      } 
     } 
     catch (Exception) 
     { 
      Console.WriteLine("Failed"); // If no connection is found 
     } 
    } 
+0

Merci - cela fonctionne parfaitement, mais pourriez-vous expliquer pourquoi? –

+0

"Socket socket = nouveau Socket (AddressFamily.InterNetwork, SocketType.Dgram, 0))" son fait une connexion UDP sans connexion qui contiendra votre adresse IP sortante. alors vous obtiendriez l'adresse IP sortante de celui-ci. – DuckSoy