我正在尝试将 IP 地址从 192.168.1.1 ping 到 192.168.1.254。首先,我使用的是 InetAddress 类,但它被窃听了,一些 IP 即使它们是也无法访问。之后我尝试了这种方法,它对于单个 ping IP 非常有效,但是当我将它放在 for-loop 中时,所有 ping 的 IP 都可以到达......你们能告诉我这里有什么问题吗?
代码:
public class Main {
public static void main(String[] args) {
String ip="192.168.1.";
try
{
for(int i=0;i<=254;i++){
String ip2=ip+i;
boolean reachable = (java.lang.Runtime.getRuntime().exec("ping -n 1 "+ip2).waitFor()==0);
if(reachable){
System.out.println("IP is reachable:: "+ip2);
}
else{
System.out.println("IP is not reachable: "+ip2);
}
}
}catch(Exception e)
{
e.printStackTrace();
}
}
}
编辑1:
我使用内置的 Java 函数来执行 ping,但它不工作(再次)
这是我使用的代码
import java.io.IOException;
import java.net.InetAddress;
import java.net.UnknownHostException;
public class Test {
public static void main(String[] args) throws UnknownHostException, IOException {
String ip = "192.168.1.243";
InetAddress inet = InetAddress.getByName(ip);
System.out.println("Sending Ping Request to " + ip);
if (inet.isReachable(5000)){
System.out.println(ip+" is reachable");
}
else{
System.out.println(ip+" is not reachable");
}
}
}
输出是:
Sending Ping Request to 192.168.1.243
192.168.1.243 is not reachable
当我从 Windows 7 内置 Ping 功能 (cmd) 执行 ping 操作时,这也是 ping 结果