获取IP及判断IP是否在区间_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > 获取IP及判断IP是否在区间

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

 2017/2/17 5:34:09  MX雪碧  程序员俱乐部  我要评论(0)
  • 摘要:///<summary>///获取客户端IP///</summary>///<returns></returns>publicstaticstringGetClientIpAddress(){varhttpContext=HttpContext.Current;if(httpContext.Request.ServerVariables==null){returnnull;}varclientIp=httpContext.Request
  • 标签:
    /// <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;

    }

 

  • 相关文章
发表评论
用户名: 匿名