我正在开发一个应用程序,可以自动将用户重定向到最近的服务器(有多个服务器)。为此,我需要检测客户端正在访问的客户端的IP地址和服务器的IP地址。我想要获取客户端的IP地址我可以使用:
HttpContext.Current.Request.UserHostAddress
如何获取客户端访问的服务器IP地址?是否可以在不使用DNS查询的情况下检测它?
答案 0 :(得分:1)
看起来就在这里:
Getting the IP address of server in ASP.NET?
//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!
答案 1 :(得分:0)
更好,更清洁,更短的方法:
using System.Net;
public IPAddress[] GetIPAddress()
{
return Dns.GetHostAddresses(Dns.GetHostName());
}
提示:此方法返回一组地址,其中一些是私有NIC,至少一个是公共的(面向Internet)。这是一种有用的方法,可以告诉您给定的IP地址是否为私有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 http://stackoverflow.com/a/2814102/290343
return rx.IsMatch(ip);
}