当前位置: 首页 > article >正文

Java - InetAddress#isReachable 方法解析

文章目录

  • 前言
  • 代码
  • 资源


前言

在 Java 中,InetAddress 类提供一个方法来检查一个网络地址是否可达,其作用类似与在命令行执行 ping 命令,

ping www.baidu.com

这个方法就是 isReachable 方法。

代码

var baidu = InetAddress.getByName("www.baidu.com");
var start = System.currentTimeMillis();
if (baidu.isReachable(1000)) {
    System.out.printf("%s spend %dms%n", baidu, System.currentTimeMillis() - start);
} else {
	// 若在 1000 毫秒内没有收到响应,则会执行到这里
    System.out.println("timeout");
}

// www.baidu.com/183.2.172.185 spend 11ms

上面代码就是 InetAddress#isReachable 的用法,注意的是,isReachable 方法在响应前会阻塞

isReachable 方法通过发送 ICMP Echo 请求到目标主机来实现其功能。如果主机在线并且能够接收到 ICMP Echo 请求,那么它将返回 true。否则,它将返回 false

需要注意的是,这个方法可能会受到防火墙的影响。如果防火墙阻止了 ICMP Echo 请求,那么即使主机在线,isReachable 方法也可能返回 false

此外,这个方法只能检测主机是否在线,不能检测主机是否能够通过网络发送数据包。如果你需要检测主机的网络连接状态,你可能需要使用其他的方法。

在 windows 系统中,IPv4 最终通过 IcmpSendEcho 函数实现。

资源

IcmpSendEcho 函数 (icmpapi.h)


http://www.kler.cn/news/160367.html

相关文章:

  • EPICS modbus 模块数字量读写练习
  • 分类与群组:解析分类和聚类分析技术
  • Kubernetes入门笔记——(2)k8s设计文档
  • java之stringbuf
  • 【9】PyQt对话框
  • Ubuntu 20.04 安装 mysql8 LTS
  • 【AI-ChatGPT-Prompt】什么是Prompt
  • Redis生产实战-热key、大key解决方案、数据库与缓存最终一致性解决方案
  • Centos7如何安装MySQL
  • HBase-架构与设计
  • 面试冲刺 - 算法题 1
  • 大数据生态架构:探索未来科技的无限可能。
  • Word文件设置了只读模式,为什么还能编辑?
  • 开发重要网站
  • 同旺科技 USB TO RS-485 定制款适配器--- 拆解(四)
  • 要求CHATGPT高质量回答的艺术:提示工程技术的完整指南—第 4 章:控制温度和 Top-p 采样
  • k8s 安装 Longhorn
  • 【数据结构】动态规划(Dynamic Programming)
  • qt 5.15.2 网络文件下载功能
  • Pair<T, U>
  • Ubuntu22.04 安装nvida-docker2和改路径
  • 分布式数据库HBase
  • 使用Go快速开发TCP公共服务
  • 深信服技术认证“SCSA-S”划重点:XSS漏洞
  • APP测试的测试内容有哪些,常见的Bug分类介绍!
  • 网络和Linux网络_11(数据链路层)以太网(MAC帧)协议+局域网转发+ARP协议
  • jvs智能bi新增:数据集添加sql自定义节点、添加websocket任务进度动态展示等等
  • springboot引入swagger2
  • 10-tornado项目部署
  • 18、XSS——cookie安全