我一年前写过一个程序,今天我看到这个程序给了我一些好奇的输出。一种检测我们网络中的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);
这真的很奇怪,我不知道如何检测这个错误。
亲切的问候原型
°°°°°修改
我试过这个代码......在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-没有机器