我正在开发一个应用程序,可以自动将用户重定向到最近的服务器(有多个服务器)。为此,我需要检测客户端的IP地址和客户端访问的服务器的IP地址。我认为可以使用以下方法获取客户端的IP地址:
HttpContext.Current.Request.UserHostAddress
如何获取客户端正在访问的服务器IP地址?是否可以在不使用DNS查询的情况下进行检测?
看起来在这里:
//this gets the ip address of the server pc
public string GetIPAddress()
{
string strHostName = System.Net.Dns.GetHostName();
IPHostEntry ipHostInfo = Dns.Resolve(Dns.GetHostName());
IPAddress ipAddress = ipHostInfo.AddressList[0];
return ipAddress.ToString();
}
向TStamper致敬!
The type or namespace name 'IPHostEntry' could not be found (are you missing a using directive or an assembly reference?)
。我有什么遗漏的吗? - skosusing System.Net;
public IPAddress[] GetIPAddress()
{
return Dns.GetHostAddresses(Dns.GetHostName());
}
提示:此方法返回一个地址数组,其中一些是私有 NIC,至少有一个是公共的(面向互联网)。这是一个有用的方法,可以告诉您给定的 IP 地址是否为私有。迭代您的 IPAddress[]
数组并针对此方法进行查询:
public bool IsPrivateNetworkIPAddress(string ip)
{
Regex rx = new Regex(@"(^127\.0\.0\.1)|(^10\.)|(^172\.1[6-9]\.)|(^172\.2[0-9]\.)|(^172\.3[0-1]\.)|(^192\.168\.)"); // see https://dev59.com/9nE85IYBdhLWcg3wXCO1#2814102
return rx.IsMatch(ip);
}