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

本文涉及的产品
任务调度 XXL-JOB 版免费试用,400 元额度,开发版规格
可观测可视化 Grafana 版,10个用户账号 1个月
云原生网关 MSE Higress,422元/月
简介: 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地址范围。

相关文章
|
12月前
|
Java
Java开发实现图片URL地址检验,如何编码?
【10月更文挑战第14天】Java开发实现图片URL地址检验,如何编码?
374 4
|
5月前
|
存储 网络协议 Java
Java获取客户端IP问题:返回127.0.0.1
总结:要解决Java获取客户端IP返回127.0.0.1的问题,首先要找出原因,再采取合适的解决方案。请参考上述方案来改进代码,确保在各种网络环境下都能正确获取客户端IP地址。希望本文对您有所帮助。
320 25
|
5月前
|
搜索推荐 Java 定位技术
Java实现利用GeoLite2-City.mmdb根据IP定位城市的方法
在城市,国家,地区等地理位置数据获取之后,你可以依指定的业务需求,来进行进一步的数据处理。例如,你可以设计一个应用,根据用户的 IP 地址来个性化地展示内容,或者用于分析网络请求的来源等。
863 20
|
11月前
|
Java API Apache
Java编程如何读取Word文档里的Excel表格,并在保存文本内容时保留表格的样式?
【10月更文挑战第29天】Java编程如何读取Word文档里的Excel表格,并在保存文本内容时保留表格的样式?
712 5
|
7月前
|
存储 监控 Java
《从头开始学java,一天一个知识点》之:数组入门:一维数组的定义与遍历
**你是否也经历过这些崩溃瞬间?** - 看了三天教程,连`i++`和`++i`的区别都说不清 - 面试时被追问&quot;`a==b`和`equals()`的区别&quot;,大脑突然空白 - 写出的代码总是莫名报NPE,却不知道问题出在哪个运算符 这个系列就是为你打造的Java「速效救心丸」!我们承诺:每天1分钟,地铁通勤、午休间隙即可完成学习;直击痛点,只讲高频考点和实际开发中的「坑位」;拒绝臃肿,没有冗长概念堆砌,每篇都有可运行的代码标本。明日预告:《多维数组与常见操作》。 通过实例讲解数组的核心认知、趣味场景应用、企业级开发规范及优化技巧,帮助你快速掌握Java数组的精髓。
133 23
|
11月前
|
存储 Java 开发者
在 Java 中,如何遍历一个 Set 集合?
【10月更文挑战第30天】开发者可以根据具体的需求和代码风格选择合适的遍历方式。增强for循环简洁直观,适用于大多数简单的遍历场景;迭代器则更加灵活,可在遍历过程中进行更多复杂的操作;而Lambda表达式和`forEach`方法则提供了一种更简洁的函数式编程风格的遍历方式。
4298 113
|
存储 Java
Java学习笔记 List集合的定义、集合的遍历、迭代器的使用
Java学习笔记 List集合的定义、集合的遍历、迭代器的使用
286 4
|
12月前
|
Web App开发 Java
使用java操作浏览器的工具selenium-java和webdriver下载地址
【10月更文挑战第12天】Selenium-java依赖包用于自动化Web测试,版本为3.141.59。ChromeDriver和EdgeDriver分别用于控制Chrome和Edge浏览器,需确保版本与浏览器匹配。示例代码展示了如何使用Selenium-java模拟登录CSDN,包括设置驱动路径、添加Cookies和获取页面源码。
747 6
|
12月前
|
Java 程序员 编译器
Java|如何正确地在遍历 List 时删除元素
从源码分析如何正确地在遍历 List 时删除元素。为什么有的写法会导致异常,而另一些不会。
285 3
|
12月前
|
存储 算法 Java
Java一分钟之-数组的创建与遍历
数组作为Java中存储和操作一组相同类型数据的基本结构,其创建和遍历是编程基础中的基础。通过不同的创建方式,可以根据实际需求灵活地初始化数组。而选择合适的遍历方法,则可以提高代码的可读性和效率。掌握这些基本技能,对于深入学习Java乃至其他编程语言的数据结构和算法都是至关重要的。
92 6