文章内容

2017/9/1 9:00:24,作 者: 黄兵

获取IP

///
/// 获取用户的IP地址
///
public static string GetIP()
{
string user_IP = HttpContext.Current.Request.Headers["X-Forwarded-For"];
if (user_IP != null && user_IP.ToLower() != "unknown")
{
//X-Forwarded-For: client1, proxy1, proxy2
string[] arrIp = user_IP.Split(',');
user_IP = arrIp[0];
if (arrIp.Length > 1)
{
//如果第一组IP是10和192.168开头还有172.16-172.31
//(第二码区间在16-31之间)的话,就取第二组IP
if (user_IP.IndexOf("10.") == 0 || user_IP.IndexOf("192.168.") == 0 ||
(user_IP.IndexOf("172.") == 0 && (user_IP.Split('.').Length > 1
&& Convert.ToInt32(user_IP.Split('.')[1]) > 15 &&
Convert.ToInt32(user_IP.Split('.')[1]) < 32)))
{
user_IP = arrIp[1];
}
}
}
else if (HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"] != null &&
HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"].ToLower() != "unknown")
{
user_IP = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
}
else
{
user_IP = HttpContext.Current.Request.UserHostAddress;
}
//ipv6的地址要全部存入
//if (user_IP.Length > 15)
//{
// user_IP = user_IP.Substring(0, 15);
//}
Regex reip = new Regex("(\\d+).(\\d+).(\\d+).(\\d+)");
return reip.Replace(user_IP, "$1.$2.$3.$4");
}


///
/// IP最后一码用星号表示
///
///
///
public static string GetIPString(string ipString)
{
Regex reip = new Regex("(\\d+).(\\d+).(\\d+).(\\d+)");
return reip.Replace(ipString, "$1.$2.$3.*");
}



分享到:

发表评论

评论列表