Java判断IP地址是否在CIDR范围内

Java原生算法

//核心代码,检索IP所属网段
public boolean isInRange(String ip, String cidr) {
    String[] ips = ip.split("\\.");
    long ipAddr = (Long.parseInt(ips[0]) << 24)
            | (Long.parseInt(ips[1]) << 16)
            | (Long.parseInt(ips[2]) << 8)
            | Long.parseInt(ips[3]);
    long type = Long.parseInt(cidr.replaceAll(".*/", ""));
    long mask = 0xFFFFFFFF << (32 - type);
    String cidrIp = cidr.replaceAll("/.*", "");
    String[] cidrIps = cidrIp.split("\\.");
    long networkIpAddr = (Long.parseInt(cidrIps[0]) << 24)
            | (Long.parseInt(cidrIps[1]) << 16)
            | (Long.parseInt(cidrIps[2]) << 8)
            | Long.parseInt(cidrIps[3]);
    return (ipAddr & mask) == (networkIpAddr & mask);
}

System.out.println(isInRange("192.168.1.129", "192.168.1.132/25"));

Apache库

//也可以使用apache的net工具类
public boolean isInRange(String ip, String network) {
    SubnetInfo subnetInfo = new SubnetUtils(network).getInfo();
    return subnetInfo.isInRange(ip);
}
上一篇 Java通过解析文件获取apk信息
下一篇 Java高级开发技巧记录
目录
文章列表
1 Kubernetes集群EFK日志框架部署
Kubernetes集群EFK日志框架部署
2
微服务网关 Spring Cloud Gateway 进阶
微服务网关 Spring Cloud Gateway 进阶
3
Android集成Bugly热更新
Android集成Bugly热更新
4
matplotlib之plt.subplot
matplotlib之plt.subplot
5
7个IntelliJ IDEA必备插件,提高编码效率
7个IntelliJ IDEA必备插件,提高编码效率
最新评论
一位WordPress评论者
一位WordPress评论者
2月12日
您好,这是一条评论。若需要审核、编辑或删除评论,请访问仪表盘的评论界面。评论者头像来自 Gravatar。