gpt4 book ai didi

java - 为什么 Java InetAddress.isReachable() 不能像在 JRE 1.7.x 上那样在 JRE 1.8.x 上工作

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:53:15 24 4
gpt4 key购买 nike

我一年前写了一个程序,今天我看到这个程序给了我一些奇怪的输出。一种在我们的网络中检测 PC 或笔记本电脑的方法我正在使用 InetAddress 类。我的程序按应有的方式工作,直到 Java 1.8.x 在执行机器上运行,如果该 IP 地址上没有机器,InetAddress.isReachable() 也会给我一个“TRUE”。

private String ipAddress = "192.168.1.200";
inetAddr = InetAddress.getByName(ipAddress);
inetIsReachable = inetAddr.isReachable(8000);
debug += " INET is reachable: " + inetIsReachable;
System.out.println(debug);

这真的很奇怪,我不知道如何检测到这个错误。

亲切的问候原型(prototype)

°°°°°编辑

我试过这段代码...在 Java 1.7 上运行

  inetAddr = InetAddress.getByName(ipAddress);
inetIsReachable = inetAddr.isReachable(8000);
// FALSE
byte[] a = new byte[]{(byte) 192,(byte) 168,1,(byte) 200};
inetAddr = InetAddress.getByAddress("192.168.1.200", a);
inetIsReachable = inetAddr.isReachable(8000);
// also FALSE

但是命令行上的 ping 到达了机器!

°°°°°EDIT-2

Java 1.8

192.168.1.200 - InetAddress true - cmd ping true - 有一台机器

192.168.1.202 - InetAddress true - cmd ping false - 没有机器

Java 1.7

192.168.1.200 - InetAddress false - cmd ping true - 有一台机器

192.168.1.202 - InetAddress false - cmd ping false - 没有机器

最佳答案

这看起来像 bug #JDK-8159410 , 显然是在 8u73 之后引入的。

关于java - 为什么 Java InetAddress.isReachable() 不能像在 JRE 1.7.x 上那样在 JRE 1.8.x 上工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38367243/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com