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;
    
        }
  • 相关阅读:
    JSP中page和pageContext的区别
    exe4j生成的exe文件没有把jre文件也打进exe文件中
    exe4j将jar文件和jre文件打包成exe
    exe4j打包jar文件为exe文件出现的问题:The JAVA_HOME environment variable does not point to a working 32-bit JDK or JRE.
    JS作用域
    js 函数
    js数组
    js表达式和语句
    js操作符
    js注释和数据类型转换
  • 原文地址:https://www.cnblogs.com/MrZheng/p/6407873.html
Copyright © 2011-2022 走看看