这是一个算法的问题。
如果你熟悉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……
如果你熟悉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……
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和子网掩码转成二进制然后做异或运算,也可得到结果
在php中好像是split(".")
然后分情况讨论
1、255.255.128.0 你的目的是要获得 128 和 3
2、255.255.255.0 你的目的是要获得 0 和 4
这样你便获得了 一个值(255-(这个值-2)便是一个ip段内能够允许的ip个数)并且你还知道是第几段为判断为下面的不用说了吧。
一对一的比较Ps:我很久没有写过php了 不可能写一个具体的算法帮助你了。
IP是2进制的
255.255.255.0的IP是
111111.111111.111111.000000
我给你发的短消息受到了吗?
或者看这个帖子
http://community.csdn.net/Expert/topic/4185/4185113.xml?temp=.8080408
我还没试
不过先谢谢了,把分解了,再有事就用短信息和你们聊了