软件编程
位置:首页>> 软件编程>> C#编程>> C# 获取IP及判断IP是否在区间

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

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

标签:C#,获取,判断,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://www.cnblogs.com/MrZheng/p/6407873.html

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com