В .NET вы можете:
IPHostEntry iphostentry = Dns.GetHostEntry (Dns.GetHostName ());
Затем для любого имени хоста проверьте, разрешается ли оно одному из IP-адресов в iphostEntry.AddressList
(это IP-адрес []).
Вот полная программа, которая проверит имена хостов / IP-адреса, переданные в командной строке:
using System;
using System.Net;
class Test {
static void Main (string [] args)
{
IPHostEntry iphostentry = Dns.GetHostEntry (Dns.GetHostName ());
foreach (string str in args) {
IPHostEntry other = null;
try {
other = Dns.GetHostEntry (str);
} catch {
Console.WriteLine ("Unknown host: {0}", str);
continue;
}
foreach (IPAddress addr in other.AddressList) {
if (IPAddress.IsLoopback (addr) || Array.IndexOf (iphostentry.AddressList, addr) != -1) {
Console.WriteLine ("{0} IsLocal", str);
break;
}
}
}
}
}