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;
    
        }
  • 相关阅读:
    第二次结对作业(陆桂莺+崔亚明)
    第一次结对作业
    第二次作业:代码互改
    markdown详细
    第一次个人编程作业:我的分数我做主
    手动下载transformers的模型
    torch设置GPU
    Python import的搜索路径和不可以import的解决方法 (On Linux)
    Python中windows路径的3种写法
    一台计算机安装多个版本的torch和CUDA的教程
  • 原文地址:https://www.cnblogs.com/MrZheng/p/6407873.html
Copyright © 2011-2022 走看看