我的页面有一个文本框,用户可以输入IP段,比如[192.168.1.10-19.168.1.111]
数据库中有张computer表,其中一个字段computerIP是机器的IP地址,
限制要根据用户输入的IP段在computer表中查询获取得这个IP段中的计算机设备,要如何比较IP?

解决方案 »

  1.   

    select * from computer where computerIP like '192.168.%'
    根据不同的需求构造不同的语句,like 后面的变变就行了
      

  2.   

    Ip转long判断
    System.Net.IPAddress ipaddress = System.Net.IPAddress.Parse("");
    long ip= ipaddress.Address;a * 256 * 256 * 256 + b * 256 * 256 + c * 256 + d; /// <summary>
            /// 分割IP 
            /// </summary>
            /// <param name="ipAddress">IP地址</param>
            /// <returns></returns>
            private long getIpNum(String ipAddress)
            {
                String[] ip = ipAddress.Split(new char[] { '.' });
                long a = int.Parse(ip[0]);
                long b = int.Parse(ip[1]);
                long c = int.Parse(ip[2]);
                long d = int.Parse(ip[3]);            return a * 256 * 256 * 256 + b * 256 * 256 + c * 256 + d;
            }
            /// <summary>
            /// 判断客户端的IP是否在某个ip段中  
            /// </summary>
            /// <param name="clientIp">客户端的IP</param>
            /// <param name="begin">开始IP</param>
            /// <param name="end">结束IP</param>
            /// <returns></returns>
            private bool isInner(long clientIp, long begin, long end)
            {
                return (clientIp >= begin) && (clientIp <= end);
            }  
    ///调用方法
    long ip = getIpNum("60.162.200.35");
                    long start_ip = getIpNum("60.162.200.0");
                    long end_ip = getIpNum("60.162.201.255");                if (isInner(ip, start_ip, end_ip))
                    {
                        Response.Write("是");
                    }
                    else
                    {
                        Response.Write("不是");
                    }
      

  3.   

    IP可以转换为long 数值型,ip段可以转为一个区间。
    这样比较数字大小就可以了。