C# 获取IP及判断IP是否在区间

作者:MX雪碧 时间:2021-10-06 23:44:50 

话不多说,请看代码:


/// <summary>
 /// 获取客户端IP
 /// </summary>
 /// <returns></returns>
 public static string GetClientIpAddress()
   {
     var httpContext = HttpContext.Current;
     if (httpContext.Request.ServerVariables == null)
     {
       return null;
     }
     var clientIp = httpContext.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] ??              httpContext.Request.ServerVariables["REMOTE_ADDR"];
     try
     {
       foreach (var hostAddress in Dns.GetHostAddresses(clientIp))
       {
         if (hostAddress.AddressFamily == AddressFamily.InterNetwork)
         {
           return hostAddress.ToString();
         }
       }
       foreach (var hostAddress in Dns.GetHostAddresses(Dns.GetHostName()))
       {
         if (hostAddress.AddressFamily == AddressFamily.InterNetwork)
         {
           return hostAddress.ToString();
         }
       }
     }
     catch (Exception ex)
     {

}
     return clientIp;
   }
 /// <summary>
 /// ip是否在ip空间内
 /// </summary>
 /// <param name="ip"></param>
 /// <param name="ipSection"></param>
 /// <returns></returns>
 public static Boolean ipExistsInRange(String ip, String ipSection)
 {
   ipSection = ipSection.Trim();
   ip = ip.Trim();
   int idx = ipSection.IndexOf('-');
   String beginIP = ipSection.Substring(0, idx);
   String endIP = ipSection.Substring(idx + 1);
   return getIp2long(beginIP) <= getIp2long(ip) && getIp2long(ip) <= getIp2long(endIP);

}
 public static long getIp2long(String ip)
 {
   ip = ip.Trim();
   String[] ips = ip.Split('.');
   long ip2long = 0L;
   for (int i = 0; i < 4; ++i)
   {
     ip2long = ip2long << 8 | Int64.Parse(ips[i]);
   }
   return ip2long;
 }
 public static long getIp2long2(String ip)
 {
   ip = ip.Trim();
   String[] ips = ip.Split('.');
   long ip1 = Int64.Parse(ips[0]);
   long ip2 = Int64.Parse(ips[1]);
   long ip3 = Int64.Parse(ips[2]);
   long ip4 = Int64.Parse(ips[3]);
   long ip2long = 1L * ip1 * 256 * 256 * 256 + ip2 * 256 * 256 + ip3 * 256 + ip4;
   return ip2long;
 }

来源:http://www.cnblogs.com/MrZheng/p/6407873.html

标签:C#,获取,判断,IP
0
投稿

猜你喜欢

  • OpenCV Java实现人脸识别和裁剪功能

    2022-08-21 01:47:23
  • java基础的详细了解第五天

    2023-06-02 16:54:04
  • SpringBoot整合jersey的示例代码

    2021-08-28 05:23:12
  • web.xml SpringBoot打包可执行Jar运行SpringMVC加载流程

    2023-11-24 07:40:52
  • 基于Spring Boot使用JpaRepository删除数据时的注意事项

    2023-04-03 09:05:39
  • 使用Java桥接模式打破继承束缚优雅实现多维度变化

    2023-08-23 09:00:34
  • SpringBoot+Jpa项目配置双数据源的实现

    2022-11-01 14:05:04
  • java 命名空间 命名规则第1/2页

    2021-06-06 14:20:19
  • Java中关于二叉树的概念以及搜索二叉树详解

    2023-01-12 00:09:25
  • SpringBoot项目多数据源及mybatis 驼峰失效的问题解决方法

    2023-07-25 07:09:08
  • Java实现五子棋游戏

    2022-07-08 12:50:27
  • Java解压和压缩带密码的zip文件过程详解

    2023-07-16 15:32:16
  • SpringBoot之Json的序列化和反序列化问题

    2021-11-12 07:17:29
  • SSM使用mybatis分页插件pagehepler实现分页示例

    2022-04-02 00:20:53
  • java使用jacob实现word转pdf

    2023-05-12 11:45:33
  • 使用Java的Lucene搜索工具对检索结果进行分组和分页

    2022-07-27 05:21:17
  • 深入解析Java中ThreadLocal线程类的作用和用法

    2022-01-12 09:03:15
  • SpringMVC 参数绑定相关知识总结

    2022-06-05 12:50:54
  • java 使用异常的好处总结

    2023-11-29 13:35:49
  • java如何通过IP解析地理位置

    2021-09-11 08:01:07
  • asp之家 软件编程 m.aspxhome.com