代码如下 | 复制代码 |
/// /// 获取客户端IP /// /// publicstaticstringGetClientIpAddress() { var httpContext = HttpContext.Current; if(httpContext.Request.ServerVariables ==null) { returnnull; } var clientIp = httpContext.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] ?? httpContext.Request.ServerVariables["REMOTE_ADDR"]; try { foreach(var hostAddressinDns.GetHostAddresses(clientIp)) { if(hostAddress.AddressFamily == AddressFamily.InterNetwork) { returnhostAddress.ToString(); } } foreach(var hostAddressinDns.GetHostAddresses(Dns.GetHostName())) { if(hostAddress.AddressFamily == AddressFamily.InterNetwork) { returnhostAddress.ToString(); } } } catch(Exception ex) {
} returnclientIp; } /// /// ip是否在ip空间内 /// /// /// /// publicstaticBoolean ipExistsInRange(String ip, String ipSection) { ipSection = ipSection.Trim(); ip = ip.Trim(); intidx = ipSection.IndexOf('-'); String beginIP = ipSection.Substring(0, idx); String endIP = ipSection.Substring(idx + 1); returngetIp2long(beginIP) <= getIp2long(ip) && getIp2long(ip) <= getIp2long(endIP);
} publicstaticlonggetIp2long(String ip) { ip = ip.Trim(); String[] ips = ip.Split('.'); longip2long = 0L; for(inti = 0; i < 4; ++i) { ip2long = ip2long << 8 | Int64.Parse(ips[i]); } returnip2long; } publicstaticlonggetIp2long2(String ip) { ip = ip.Trim(); String[] ips = ip.Split('.'); longip1 = Int64.Parse(ips[0]); longip2 = Int64.Parse(ips[1]); longip3 = Int64.Parse(ips[2]); longip4 = Int64.Parse(ips[3]); longip2long = 1L * ip1 * 256 * 256 * 256 + ip2 * 256 * 256 + ip3 * 256 + ip4; returnip2long; } |