zoukankan      html  css  js  c++  java
  • 获取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;
    
        }
  • 相关阅读:
    web.xml中监听器如何顺序加载
    spring配置文件中util:properties和context:property-placeholder
    jquery实现上下浮动
    索引-mysql索引创建、查看、删除及使用示例
    MD5加密
    怎么去除innerHTML获得内容中的标签?
    数据库优化常用的几种小技巧
    数据库表的连接(Left join , Right Join, Inner Join)用法详解
    HTMl5的sessionStorage和localStorage
    json数据字典,以及数据在下拉框中显示
  • 原文地址:https://www.cnblogs.com/MrZheng/p/6407873.html
Copyright © 2011-2022 走看看