最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
C# 获取IP及判断IP是否在区间
时间:2017-04-13 编辑:简简单单 来源:一聚教程网
代码如下 | 复制代码 |
/// /// 获取客户端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; } |
相关文章
- C#复制数组的两种方式及效率比较解读 10-24
- ASP.NET Identity用法解析 10-24
- ASP.NET MVC使用Identity增删改查用户介绍 10-24
- C语言中atoi函数模拟实现介绍 10-18
- .Net反向代理组件Yarp用法介绍 10-10
- .NET使用YARP通过编码方式配置域名转发实现反向代理教程 10-10