Windows で使用するために、Java で次の ping 関数をコーディングしました。これは、自分のコンピューターで完全に動作します。残念ながら、理由はわかりませんが、他のコンピューター (Windows マシン) で実行すると、"null" が返されます。
たとえば、Windows ファイアウォールによってブロックされる可能性はありますか? Windowsのバージョンの問題でしょうか?XP から Windows8 へ、または異なる言語バージョンへ?
私のコンピューターでは、次のような結果を受け取ります: time=19ms TTL=111
誰かが私に教えてください。なぜ失敗するのですか?
private String ping() {
String ip = "<external IP of a server running, always online>";
String time = null;
String pingCommand = "ping " + ip;
ProcessBuilder builder = new ProcessBuilder(new String[] {"cmd.exe", "/C",pingCommand});
try {
Process newProcess = builder.start();
BufferedReader in = new BufferedReader(new InputStreamReader(newProcess.getInputStream()));
String inputLine = in.readLine();
while ((inputLine != null)) {
if (inputLine.length() > 0) {
if(inputLine.contains("time")){
// Checking for the time only
time = inputLine.substring(inputLine.indexOf("time"));
break;
}
}
inputLine = in.readLine();
}
} catch (IOException ex) {
Logger.getLogger(main.class.getName()).log(Level.SEVERE, null, ex);
}
return time;
}