在 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中文网其他相关文章!