private static bool IsLocalHost(string hostName)
{
// lookup requested host.
IPHostEntry requestedHost = Dns.GetHostEntry(hostName);
if (requestedHost == null || requestedHost.AddressList == null)
{
return true;
}
// check for loopback.
for (int ii = 0; ii < requestedHost.AddressList.Length; ii++)
{
IPAddress requestedIP = requestedHost.AddressList[ii];
if (requestedIP == null || requestedIP.Equals(IPAddress.Loopback))
{
return true;
}
}
// lookup local host.
IPHostEntry localHost = Dns.GetHostEntry(Dns.GetHostName());
if (localHost == null || localHost.AddressList == null)
{
return false;
}
// check for localhost.
for (int ii = 0; ii < requestedHost.AddressList.Length; ii++)
{
IPAddress requestedIP = requestedHost.AddressList[ii];
for (int jj = 0; jj < localHost.AddressList.Length; jj++)
{
if (requestedIP.Equals(localHost.AddressList[jj]))
{
return true;
}
}
}
// must be remote.
return false;
}