Для использования DNS необходимо, чтобы ваш компьютер был зарегистрирован на локальном DNS-сервере, что не всегда верно, если вы находитесь в интрасети, и еще менее вероятно, если вы дома с провайдером. Это также требует сетевого обхода - все, чтобы узнать информацию о вашем собственном компьютере.
Правильный путь:
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());
}
}
}
(ОБНОВЛЕНИЕ 31-Jul-2015: Исправлены некоторые проблемы с кодом)
Или для тех, кто любит просто линейку Linq:
NetworkInterface.GetAllNetworkInterfaces()
.SelectMany(adapter=> adapter.GetIPProperties().UnicastAddresses)
.Where(adr=>adr.Address.AddressFamily == AddressFamily.InterNetwork && adr.IsDnsEligible)
.Select (adr => adr.Address.ToString());