LANネットワーク上のすべてのコンピューターにpingを実行するプロジェクトがあります。最初に使用InetAddress.isReachable()
しましたが、IP が到達可能であっても、IP が到達可能でないことを関数が返す場合があります (Windows の組み込み関数で試行し、IP は到達可能でした)。次に、このコードで試しました:
Process proc = new ProcessBuilder("ping", host).start();
int exitValue = proc.waitFor();
System.out.println("Exit Value:" + exitValue);
しかし、出力は間違っています。次に、少しグーグルして、このコードを見つけました:
import java.io.*;
import java.util.*;
public class JavaPingExampleProgram
{
public static void main(String args[])
throws IOException
{
// create the ping command as a list of strings
JavaPingExampleProgram ping = new JavaPingExampleProgram();
List<String> commands = new ArrayList<String>();
commands.add("ping");
commands.add("-n");
commands.add("1");
commands.add("192.168.1.1");
ping.doCommand(commands);
}
public void doCommand(List<String> command)
throws IOException
{
String s = null;
ProcessBuilder pb = new ProcessBuilder(command);
Process process = pb.start();
BufferedReader stdInput = new BufferedReader(new InputStreamReader(process.getInputStream()));
BufferedReader stdError = new BufferedReader(new InputStreamReader(process.getErrorStream()));
// read the output from the command
System.out.println("Here is the standard output of the command:\n");
while ((s = stdInput.readLine()) != null)
{
System.out.println(s);
}
// read any errors from the attempted command
System.out.println("Here is the standard error of the command (if any):\n");
while ((s = stdError.readLine()) != null)
{
System.out.println(s);
}
}
}
このコードは問題なく動作しましたが、問題は、Windows が他の言語を使用している場合、アドレスに到達できるかどうかわからないことです。LANまたはVPNネットワークでIPアドレスにpingを実行する安全な方法を教えてください. ありがとうございました。