Używanie Dns wymaga, aby komputer był zarejestrowany na lokalnym serwerze DNS, co niekoniecznie musi być prawdziwe, jeśli korzystasz z intranetu, a jeszcze rzadziej, gdy jesteś w domu z usługodawcą internetowym. Wymaga to również połączenia z siecią - wszystko, aby dowiedzieć się informacji o swoim komputerze.
Właściwym sposobem:
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: Poprawiono kilka problemów z kodem)
lub dla tych, którzy lubią tylko linię LINQ:
NetworkInterface.GetAllNetworkInterfaces()
.SelectMany(adapter=> adapter.GetIPProperties().UnicastAddresses)
.Where(adr=>adr.Address.AddressFamily == AddressFamily.InterNetwork && adr.IsDnsEligible)
.Select (adr => adr.Address.ToString());
Który adres IP w tablicy, która otrzymasz, jest właściwa? – EBGreen
GetHostByName pokazane jako przestarzałe. zakończone przy użyciu: Adres IP [] ipAddress = Dns.GetHostAddresses (strHostName); dokonuje się to samo. –
Również węgierska notacja jest prawie martwa w tym momencie. Użyj nazwy hosta string. –