前言
关注我,领取学习资料,接下来还会持续更新。 作者:神的孩子都在歌唱
IP是Internet Protocol的缩写,即网际协议,它是计算机网络体系结构中的网络层协议。IPv4使用32位地址(IPv6为128位),通常采用点分十进制表示,例如:192.168.1.47
。这个地址由两部分组成:网络位和主机位。
传统的IPv4地址被分为A、B、C、D、E五类:
1.0.0.0
到 126.255.255.255
128.0.0.0
到 191.255.255.255
192.0.0.0
到 223.255.255.255
某些地址被保留作为私有网络使用,无法在公网访问:
10.0.0.0
到 10.255.255.255
172.16.0.0
到 172.31.255.255
192.168.0.0
到 192.168.255.255
子网掩码也是32位长,用于区分网络位和主机位。掩码网络位用1
表示,主机位用0
表示。
子网掩码的表示方式:
255.255.255.0
/24
,表示网络位占24位。作用: 子网掩码的作用是确定一个IP地址的网络位长度,从而识别出IP所属的子网。
以下是一个用于判断给定IP是否属于指定网段的Java代码示例:
public staticbooleanipIsInNet(String ip, String ipArea) {
if ("127.0.0.1".equals(ip)) {
returntrue;
}
if(StringUtils.isBlank(ipArea)){
returnfalse;
}
String[] ipArray = ipArea.split(",");
for (String s : ipArray) {
if (!s.contains("/")) {
if (s.equals(ip)) {
returntrue;
}
continue;
}
String[] ips = ip.split("\\.");
intipAddress= (Integer.parseInt(ips[0]) << 24)
| (Integer.parseInt(ips[1]) << 16)
| (Integer.parseInt(ips[2]) << 8)
| Integer.parseInt(ips[3]);
inttype= Integer.parseInt(s.replaceAll(".*/", ""));
intmask=0xFFFFFFFF << (32 - type);
StringcidrIp= s.replaceAll("/.*", "");
String[] cidrIps = cidrIp.split("\\.");
intcidrIpAddr= (Integer.parseInt(cidrIps[0]) << 24)
| (Integer.parseInt(cidrIps[1]) << 16)
| (Integer.parseInt(cidrIps[2]) << 8)
| Integer.parseInt(cidrIps[3]);
if ((ipAddress & mask) == (cidrIpAddr & mask)) {
returntrue;
}
}
returnfalse;
}
这个代码可以用来判断某个IP地址是否属于指定的IP网段。
参考文章:java判断ip是否为指定网段
作者:神的孩子都在歌唱 本人博客:https://blog.csdn.net/weixin_46654114 转载说明:务必注明来源,附带本人博客连