好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

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;

   }

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持服务器之家!

原文链接:http://HdhCmsTestcnblogs测试数据/MrZheng/p/6407873.html

dy("nrwz");

查看更多关于C# 获取IP及判断IP是否在区间的详细内容...

  阅读:46次