El uso de Dns requiere que su computadora esté registrada con el servidor DNS local, lo que no es necesariamente cierto si está en una intranet, y menos aún si está en su casa con un ISP. También requiere un viaje de ida y vuelta de la red, todo para encontrar información sobre su propia computadora.
La forma correcta:
NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces();
foreach(NetworkInterface adapter in nics)
{
foreach(var x in adapter.GetIPProperties().UnicastAddresses)
{
if (x.Address.AddressFamily == AddressFamily.InterNetwork && x.IsDnsEligible)
{
Console.WriteLine(" IPAddress ........ : {0:x}", x.Address.ToString());
}
}
}
(ACTUALIZACIÓN 31-Jul-2015: Se han solucionado algunos problemas con el código)
o para aquellos que les gusta sólo una línea de LINQ:
NetworkInterface.GetAllNetworkInterfaces()
.SelectMany(adapter=> adapter.GetIPProperties().UnicastAddresses)
.Where(adr=>adr.Address.AddressFamily == AddressFamily.InterNetwork && adr.IsDnsEligible)
.Select (adr => adr.Address.ToString());
¿Qué dirección IP de la matriz que recibe es la correcta? – EBGreen
GetHostByName se muestra como obsoleto. terminó usando: IPAddress [] ipAddress = Dns.GetHostAddresses (strHostName); logra lo mismo. –
Además, la notación húngara está casi muerta en este punto. Use la cadena hostName. –