使用 Hutool 检查 IP 是否可 Ping 通

Hutool 提供了 NetUtil.ping 方法,可以快速检查目标 IP 或域名是否能够 Ping 通。

方法 1:简单 Ping 测试
import cn.hutool.core.net.NetUtil;

public class PingExample {
    public static void main(String[] args) {
        String ip = "192.168.1.1"; // 替换为目标 IP 或域名
        boolean reachable = NetUtil.ping(ip);
        System.out.println(ip + " 是否可达: " + reachable);
    }
}
  • NetUtil.ping(ip) 返回 boolean 值,true 表示可 Ping 通,false 表示不可达。
  • 默认超时时间为 2000 毫秒(2 秒)。
方法 2:自定义超时时间
import cn.hutool.core.net.NetUtil;

public class PingWithTimeout {
    public static void main(String[] args) {
        String ip = "example.com";
        int timeout = 5000; // 自定义超时时间(毫秒)
        boolean reachable = NetUtil.ping(ip, timeout);
        System.out.println(ip + " 是否可达: " + reachable);
    }
}
  • 通过 NetUtil.ping(ip, timeout) 指定超时时间(单位:毫秒)。
方法 3:获取详细 Ping 结果

如果需要获取 Ping 的详细结果(如耗时),可以使用 NetUtil.ping(String, int) 的返回值:

import cn.hutool.core.net.NetUtil;

public class DetailedPing {
    public static void main(String[] args) {
        String ip = "8.8.8.8";
        int timeout = 3000;
        long elapsed = NetUtil.ping(ip, timeout); // 返回耗时(毫秒),-1 表示超时或失败
        if (elapsed >= 0) {
            System.out.println(ip + " 可达,耗时: " + elapsed + "ms");
        } else {
            System.out.println(ip + " 不可达或超时");
        }
    }
}
  • 返回值 elapsed 为实际 Ping 耗时(毫秒),若返回 -1 表示 Ping 失败或超时。
注意事项
  1. 需要确保目标 IP 或域名允许 ICMP 协议(部分服务器可能禁 Ping)。
  2. 在 Windows 和 Linux 系统下均可使用,Hutool 会自动调用系统命令实现。
  3. 如果测试外网 IP,需确保本地网络环境正常。
Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐