首页  >  文章  >  Java  >  为什么在 Java 中无法 Ping 远程主机?

为什么在 Java 中无法 Ping 远程主机?

Barbara Streisand
Barbara Streisand原创
2024-10-26 23:28:30409浏览

Why Can't I Ping Remote Hosts in Java?

在 Java 中 ping IP 地址时排除无法访问主机错误

给定的代码片段旨在 ping IP 地址,但程序遇到问题当尝试 ping 本地主机以外的主机时。虽然禁用防火墙可能会消除网络限制,但代码无法有效 ping 远程主机。

此问题的根源在于 InetAddress.isReachable() 方法利用不同的机制来确定基于主机的可达性关于权限的可用性,如Java文档中所述:

“如果可以获得权限,典型的实现将使用ICMP ECHO REQUEST,否则它将尝试在端口7上建立TCP连接(Echo)目标主机的。”

在大多数情况下,ICMP ECHO REQUEST 用于检查主机的可达性。但是,在许多操作系统中使用 ICMP 需要管理(root)权限。如果没有这些权限,该方法将回退到在端口 7 上建立 TCP 连接。

要解决此问题,请确保程序有足够的权限来执行 ICMP ECHO REQUEST。如果这不可行,请考虑使用不依赖 ICMP 的替代方法进行主机可达性测试。

以上是为什么在 Java 中无法 Ping 远程主机?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn