检测客户端和服务器的IP地址

时间:2012-03-21 08:11:18

标签: c# asp.net

我正在开发一个应用程序,可以自动将用户重定向到最近的服务器(有多个服务器)。为此,我需要检测客户端正在访问的客户端的IP地址和服务器的IP地址。我想要获取客户端的IP地址我可以使用:

HttpContext.Current.Request.UserHostAddress

如何获取客户端访问的服务器IP地址?是否可以在不使用DNS查询的情况下检测它?

2 个答案:

答案 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);
}