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

Java或JS中如何简便快速遍历指定区间内的所有IP地址

遍历IP范围的实现方案

核心思路

IPv4本质是32位无符号整数,最简单高效的遍历方式是先把起止IP转换为整数,直接按整数范围循环遍历,再把整数转回IPv4字符串即可,不需要处理四段分段的边界判断,逻辑简洁性能也高。
你给出的示例IP段104.200.16.0转整数为175636480,104.200.31.255转整数为175638527,直接循环2048次就能遍历完所有IP。

Java实现

public class IpIterator {
    // IPv4转32位整数
    public static long ipToLong(String ipStr) {
        String[] parts = ipStr.split("\\.");
        return (Long.parseLong(parts[0]) << 24) |
               (Long.parseLong(parts[1]) << 16) |
               (Long.parseLong(parts[2]) << 8) |
                Long.parseLong(parts[3]);
    }

    // 32位整数转IPv4
    public static String longToIp(long ipLong) {
        return (ipLong >> 24 & 0xFF) + "." +
               (ipLong >> 16 & 0xFF) + "." +
               (ipLong >> 8 & 0xFF) + "." +
               (ipLong & 0xFF);
    }

    public static void main(String[] args) {
        String startIp = "104.200.16.0";
        String endIp = "104.200.31.255";
        long start = ipToLong(startIp);
        long end = ipToLong(endIp);
        for (long i = start; i <= end; i++) {
            String currentIp = longToIp(i);
            // 此处添加当前IP的业务处理逻辑
            System.out.println(currentIp);
        }
    }
}

如果需要兼容非法输入,自行添加参数校验即可,比如判断拆分后的IP段是否为4段、每段数值是否在0-255范围内。

JavaScript实现

// IPv4转整数
function ipToLong(ipStr) {
    return ipStr.split('.').reduce((acc, part) => (acc << 8) + parseInt(part, 10), 0) >>> 0;
}

// 整数转IPv4
function longToIp(ipLong) {
    return [
        (ipLong >>> 24) & 0xFF,
        (ipLong >>> 16) & 0xFF,
        (ipLong >>> 8) & 0xFF,
        ipLong & 0xFF
    ].join('.');
}

// 遍历逻辑
const startIp = '104.200.16.0';
const endIp = '104.200.31.255';
const start = ipToLong(startIp);
const end = ipToLong(endIp);
for (let i = start; i <= end; i++) {
    const currentIp = longToIp(i);
    // 此处添加当前IP的业务处理逻辑
    console.log(currentIp);
}

代码中>>> 0是为了保证输出无符号整数,避免IP高位为1时出现负数异常。

内容的提问来源于stack exchange,提问作者Internet Person 2

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 21:48:02