这是一个算法的问题。
如果你熟悉IP划分、SubNetMark这个很简单。
我给你一个思路、具体的代码你自己写:
subnet(子网掩码)是由一组连续不断的1组成的。比如255.255.255.0
你只用看值为0的地方。可以通过0的个数判断出一个子网内允许的IP个数。
比如:255.255.255.0 的理论IP范围 是 xxx.xxx.xxx.0 - xxx.xxx.xxx.255 (出去,xxx.xxx.xxx.0 和 xxx.xxx.xxx.255 这地址)
对于 子网掩码 为255.255.0.0的
你只需要考虑 IPv4 的第3段 xxx.xxx.0.xxx
用上面的方法判断。
Ok……

解决方案 »

  1.   

    实际上ip地址就是一个255进制的数,你只要把它转成10进制数,就可以比较了。
    ip1=192*255*255*255+168*255*255+10*255+0   // 192.168.10.0转换成10进制
    ip2=192*255*255*255+168*255*255+10*255+255 //192.168.10.255转换成10进制
    ip3=192*255*255*255+168*255*255+10*255+100
    if ip3>ip1 and ip3<ip2 then
    response.write "ip3在这个子网内"
    end if这样做,是一种通用方法。如果编程语言支持二进制运算和异或运算,可以直接将ip和子网掩码转成二进制然后做异或运算,也可得到结果
      

  2.   

    你以子网掩码的.分割为数组
    在php中好像是split(".")
    然后分情况讨论
    1、255.255.128.0   你的目的是要获得 128 和 3
    2、255.255.255.0   你的目的是要获得 0   和 4
    这样你便获得了 一个值(255-(这个值-2)便是一个ip段内能够允许的ip个数)并且你还知道是第几段为判断为下面的不用说了吧。
    一对一的比较Ps:我很久没有写过php了 不可能写一个具体的算法帮助你了。
      

  3.   

    sorry!记错了,ip应该是256进制的,你转换的时候乘256好了
      

  4.   

    不对
    IP是2进制的
    255.255.255.0的IP是
    111111.111111.111111.000000
      

  5.   

    wanghui0380(放歌):
    我给你发的短消息受到了吗?
    或者看这个帖子
    http://community.csdn.net/Expert/topic/4185/4185113.xml?temp=.8080408
      

  6.   

    感谢wanghui0380和狼
    我还没试
    不过先谢谢了,把分解了,再有事就用短信息和你们聊了