平函数返回所有ping的IP地址是可到达(Ping function returns that al

2019-10-30 10:15发布

我特林来ping IP地址192.168.1.1从192.168.1.254到。 首先,我用我的InetAddress类,但是它被窃听和一些IP地址,甚至如果他们不可达。 之后,这个方法我试过和它的工作非常好一条ping IP,但是当我把它里面的for循环的所有IP地址ping操作到达那里......你们可以告诉我,什么是错的吗?

码:

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)查验

Answer 1:

使用isReachable()来代替。

InetAddress.getByName(address).isReachable(timeout);


Answer 2:

为什么它不工作:

您正在使用ping程序的退出状态,而不是平本身的实际结果。 它只是告诉你进程是否正常或不退出。 一个失败的ping不导致进程异常退出,因此总是返回的0(零)的退出代码。

你可以尝试什么来代替:

获取的过程中,它会告诉你的输出是什么的输出流。 然后试图解释/解析这个,但是你想:

http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Process.html#getOutputStream%28%29

(虽然这也并不感到完美的我来说,这是一个更好的选择,而不是使用退出代码)



Answer 3:

亲爱的主席先生的问题,为什么你程序无法在环平系统中,循环的执行速度比从systems.That的答复是,为什么有些人的回答无法到达,为了解决这样的问题,您应该使用一个线程,并使用了Thread.sleep(介绍每个Ping稍有延迟)method.I认为这将工作谢谢



文章来源: Ping function returns that all pinged IP addresses is reachable