• 技术文章 >后端开发 >C#.Net教程

    C#获取IP及判断IP是否在区间的示例代码

    黄舟黄舟2017-03-22 11:46:14原创938
    本文主要介绍了C# 获取IP及判断IP是否在区间的方法。具有很好的参考价值,下面跟着小编一起来看下吧

    话不多说,请看代码:

    /// <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;
      }

    以上就是C#获取IP及判断IP是否在区间的示例代码的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:C#,IP
    上一篇:详解C#接口在派生类和外部类中的调用方法示例 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • c语言中源文件编译后生成什么文件• C#中GDI+编程10个基本技巧二• 应用绝对路径与相对路径• ASP.NET使用Ajax如何返回Json对象的方法具体介绍• C/C++深度分析
    1/1

    PHP中文网