You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Java或Guava工具类判断IP是否属于0/8子网?

判断IP是否属于0/8子网的实现方案

0/8子网对应的IP范围是0.0.0.0到0.255.255.255,可以通过以下两种方式实现判断:

一、使用Java原生InetAddress实现

Java原生API没有直接提供子网匹配方法,但可以通过分析IP地址的字节数组判断:0/8子网的掩码是255.0.0.0,因此IP地址的第一个字节必须为0。

示例代码:

import java.net.InetAddress;
import java.net.UnknownHostException;

public class NativeIpChecker {
    public static boolean isIn0_8Subnet(InetAddress ipAddress) {
        byte[] ipBytes = ipAddress.getAddress();
        // 0/8子网的第一个字节固定为0
        return ipBytes[0] == 0;
    }

    public static void main(String[] args) throws UnknownHostException {
        // 测试用例
        System.out.println(isIn0_8Subnet(InetAddress.getByName("0.0.0.0")));      // true
        System.out.println(isIn0_8Subnet(InetAddress.getByName("0.255.255.255")));// true
        System.out.println(isIn0_8Subnet(InetAddress.getByName("1.0.0.1")));      // false
    }
}

二、使用Guava的InetAddresses工具类实现

Guava的InetSubnet类封装了现成的子网包含判断逻辑,实现更简洁且不易出错:

示例代码:

import com.google.common.net.InetAddresses;
import com.google.common.net.InetSubnet;
import java.net.InetAddress;
import java.net.UnknownHostException;

public class GuavaIpChecker {
    // 预定义0/8子网对象
    private static final InetSubnet ZERO_EIGHT_SUBNET = InetSubnet.create("0.0.0.0/8");

    public static boolean isIn0_8Subnet(InetAddress ipAddress) {
        return ZERO_EIGHT_SUBNET.contains(ipAddress);
    }

    public static void main(String[] args) throws UnknownHostException {
        // 测试用例
        System.out.println(isIn0_8Subnet(InetAddresses.forString("0.10.20.30"))); // true
        System.out.println(isIn0_8Subnet(InetAddresses.forString("0.255.0.0")));  // true
        System.out.println(isIn0_8Subnet(InetAddresses.forString("2.0.0.0")));    // false
    }
}

注意:使用Guava工具类需要先引入对应的依赖包。

内容的提问来源于stack exchange,提问作者Dariusz Krynicki

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 11:31:41