2010-01-07 37 views
10

¿Cómo obtengo la dirección IP de una máquina en C#?Cómo obtener la dirección IP de una máquina en C#

+2

, entonces al menos podría enlazar al artículo y decirnos qué tiene de malo. ¿Y qué pasa con los bucles por cierto? :) –

+3

Tal como está redactado, "127.0.0.1" es una respuesta correcta. Es una dirección IP de la máquina actual. – MSalters

+1

@MSalters: Todavía no estoy seguro de si 'return 127.0.0.1' sería una respuesta que hubiera votado :) – marcgg

Respuesta

31
IPAddress[] localIPs = Dns.GetHostAddresses(Dns.GetHostName()); 

Su máquina no tiene una única dirección IP, y algunas de las direcciones devueltas puede ser IPv6.

enlaces de MSDN:

Alternativamente, como MSalters mencionado, 127.0.0.1/::1 es la loopback address y se refieren siempre a la máquina local. Sin embargo, por razones obvias, no se puede usar para conectarse a la máquina local desde una máquina remota.

+2

Copiado de @patridge en la otra respuesta: Si busca un dirección IP más relevante, es posible que desee excluir direcciones IP de bucle invertido (por ejemplo, 127.0.0.1 y :: 1) con algo como esto: .Where (ip =>! Net.IPAddress.IsLoopback (ip)) –

1
IPHostEntry ip = DNS.GetHostByName (strHostName); 
IPAddress [] IPaddr = ip.AddressList; 

for (int i = 0; i < IPaddr.Length; i++) 
{ 
    Console.WriteLine ("IP Address {0}: {1} ", i, IPaddr[i].ToString()); 
} 
+5

GetHostByName está en desuso - http : //msdn.microsoft.com/en-us/library/system.net.dns.gethostbyname.aspx –

8

Mi respuesta deseada se

string ipAddress = ""; 
if (Dns.GetHostAddresses(Dns.GetHostName()).Length > 0) 
{ 
    ipAddress = Dns.GetHostAddresses(Dns.GetHostName())[0].ToString(); 
} 
+8

Esto está ejecutando 'GetHostAddresses' y' GetHostName' dos veces; debe asignar los resultados de GetHostAddresses a una variable y luego verificar el 'Longitud'. –

+8

Si está buscando una dirección IP más relevante, puede excluir direcciones IP de bucle invertido (por ejemplo, 127.0.0.1 y :: 1) con algo como esto: '.Where (ip =>! Net.IPAddress.IsLoopback (ip)) '. – patridge

0
string hostName = Dns.GetHostName(); // Retrive the Name of HOST 

      // Get the IP 
      string myIP = Dns.GetHostByName(hostName).AddressList[0].ToString(); 

// uso siguientes Namespace using System.Net;

Cuestiones relacionadas