日期:2014-05-20  浏览次数:20827 次

比较两个IP是否在同一段
现假设第一个IP=192.168.188 Netmask=255.255.255.0
第二个IP=172.168.1.88 Netmask=255.255.0.0
很明显这两个IP是不在同一段的。但是在代码中怎么样进行判断这两个IP是否在同一网段呢


------解决方案--------------------
要判断两个IP地址是不是在同一个网段,就将它们的IP地址分别与子网掩码做与运算,得到的结果一网络号,如果网络号相同,就在同一子网,否则,不在同一子网。 
例:假定选择了子网掩码255.255.254.0,现在分别将上述两个IP地址分别与掩码做与运算,如下图所示: 
211.95.165.24 11010011 01011111 10100101 00011000 
255.255.254.0 11111111 11111111 111111110 00000000 
与的结果是: 11010011 01011111 10100100 00000000 

211.95.164.78 11010011 01011111 10100100 01001110 
255.255.254.0 11111111 11111111 111111110 00000000 
与的结果是: 11010011 01011111 10100100 00000000 

可以看出,得到的结果(这个结果就是网络地址)都是一样的,因此可以判断这两个IP地址在同一个子网。

根据这个思路来写java代码~