java 遍历打印ip 0.0.0.0 -255.255.255.255,不包含保留地址

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
可观测可视化 Grafana 版,10个用户账号 1个月
简介: java 遍历打印ip 0.0.0.0 -255.255.255.255,不包含保留地址

如果你希望在Java中遍历和打印从0.0.0.0到255.255.255.255的IP地址范围,但不包括保留地址,可以使用以下代码示例:

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

public class IPTraversal {
   
    public static void main(String[] args) {
   
        try {
   
            long start = ipToLong("0.0.0.0");
            long end = ipToLong("255.255.255.255");

            for (long i = start; i <= end; i++) {
   
                String ipAddress = longToIp(i);
                if (!isReservedIP(ipAddress)) {
   
                    System.out.println(ipAddress);
                }
            }
        } catch (UnknownHostException e) {
   
            e.printStackTrace();
        }
    }

    public static long ipToLong(String ipAddress) throws UnknownHostException {
   
        InetAddress inetAddress = InetAddress.getByName(ipAddress);
        byte[] addressBytes = inetAddress.getAddress();
        long result = 0;

        for (byte octet : addressBytes) {
   
            result <<= 8;
            result |= octet & 0xff;
        }

        return result;
    }

    public static String longToIp(long ip) {
   
        StringBuilder ipAddress = new StringBuilder();

        for (int i = 3; i >= 0; i--) {
   
            ipAddress.append((ip >> (i * 8)) & 0xff);

            if (i > 0) {
   
                ipAddress.append(".");
            }
        }

        return ipAddress.toString();
    }

    public static boolean isReservedIP(String ipAddress) {
   
        try {
   
            long ip = ipToLong(ipAddress);

            // 检查私有地址范围和回环地址范围
            if ((ip >= ipToLong("10.0.0.0") && ip <= ipToLong("10.255.255.255"))
                    || (ip >= ipToLong("172.16.0.0") && ip <= ipToLong("172.31.255.255"))
                    || (ip >= ipToLong("192.168.0.0") && ip <= ipToLong("192.168.255.255"))
                    || (ip == ipToLong("127.0.0.1"))) {
   
                return true;
            }
        } catch (UnknownHostException e) {
   
            e.printStackTrace();
        }

        return false;
    }
}

上述代码在遍历IP地址时,在打印之前通过 isReservedIP 方法检查是否为保留地址。如果是保留地址,则跳过打印步骤。

请注意,这个操作仍然需要相当长的时间才能完成,因为涉及到了大量的IP地址范围。

相关文章
|
Java
java实现遍历树形菜单方法——OpenSessionView实现
java实现遍历树形菜单方法——OpenSessionView实现
13 0
|
2月前
|
Java
java实现遍历树形菜单方法——TreeAction实现
java实现遍历树形菜单方法——TreeAction实现
10 0
|
2月前
|
Java
java实现遍历树形菜单方法——HibernateUtil实现
java实现遍历树形菜单方法——HibernateUtil实现
11 0
|
2月前
|
Java
java实现遍历树形菜单方法——service层
java实现遍历树形菜单方法——service层
11 0
|
2月前
|
Java
java实现遍历树形菜单方法——映射文件VoteTree.hbm.xml
java实现遍历树形菜单方法——映射文件VoteTree.hbm.xml
11 0
|
2月前
|
Java
java实现遍历树形菜单方法——实体类VoteTree
java实现遍历树形菜单方法——实体类VoteTree
15 0
|
2月前
|
Java
【Java每日一题】——第十六题:将数组元素逆序并遍历输出。
【Java每日一题】——第十六题:将数组元素逆序并遍历输出。
31 0
|
3月前
|
Java Maven
java修改当前项目的maven仓库地址为国内
修改当前项目的maven仓库地址为国内
|
Java
java实现遍历树形菜单方法——index.jsp实现
java实现遍历树形菜单方法——index.jsp实现
7 0
|
5天前
|
存储 Java 定位技术
【Java】根据IP地址获取省市
【Java】根据IP地址获取省市
18 1