Dns Verwendung erfordert, dass der Computer mit dem lokalen DNS-Server registriert werden, was nicht unbedingt der Fall ist, wenn Sie auf einem Intranet sind, und noch weniger wahrscheinlich, wenn Sie zu Hause mit einem ISP sind. Es erfordert auch eine Netzwerk-Roundtrip - alles um Informationen über Ihren eigenen Computer zu erfahren.
Der richtige Weg:
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());
}
}
}
(UPDATE 31-Jul-2015: Fest einige Probleme mit dem Code)
Oder für diejenigen, die nur eine Linie von Linq mögen:
NetworkInterface.GetAllNetworkInterfaces()
.SelectMany(adapter=> adapter.GetIPProperties().UnicastAddresses)
.Where(adr=>adr.Address.AddressFamily == AddressFamily.InterNetwork && adr.IsDnsEligible)
.Select (adr => adr.Address.ToString());
Welche IP-Adresse im Array, die Sie zurück erhalten, ist die richtige? – EBGreen
GetHostByName wird als veraltet angezeigt. aufgewickelt werden: IPAddress [] = ipAddress Dns.GetHostAddresses (strHostName); führt die gleiche Sache. –
Auch die ungarische Schreibweise ist zu diesem Zeitpunkt fast tot. Verwenden Sie Zeichenfolge hostName. –