我知道這個問題已經以不同的方式接近了,但是我檢查了stackoverflow,並且我沒有找到我正在尋找的答案。在java中的Ping值
爲了使簡單:有沒有辦法讓在的Windows的時間ping值到IP服務器?
我知道如何檢查一些服務器是否可以訪問,但我想要精確的值,就像我們可以在終端上讀取一樣。
謝謝爲您的幫助和理解。
我知道這個問題已經以不同的方式接近了,但是我檢查了stackoverflow,並且我沒有找到我正在尋找的答案。在java中的Ping值
爲了使簡單:有沒有辦法讓在的Windows的時間ping值到IP服務器?
我知道如何檢查一些服務器是否可以訪問,但我想要精確的值,就像我們可以在終端上讀取一樣。
謝謝爲您的幫助和理解。
你可以做這樣的事情:
//The command to execute
String pingCmd = "ping " + ip + " -t";
//get the runtime to execute the command
Runtime runtime = Runtime.getRuntime();
Process process = runtime.exec(pingCmd);
//Gets the inputstream to read the output of the command
BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream()));
//reads the outputs
String inputLine = in.readLine();
while ((inputLine != null)) {
if (inputLine.length() > 0) {
........
}
inputLine = in.readLine();
}
UPDATE:根據自己的需要
public class PingDemo {
public static void main(String[] args) {
String ip = "localhost";
String time = "";
//The command to execute
String pingCmd = "ping " + ip;
//get the runtime to execute the command
Runtime runtime = Runtime.getRuntime();
try {
Process process = runtime.exec(pingCmd);
//Gets the inputstream to read the output of the command
BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream()));
//reads the outputs
String inputLine = in.readLine();
while ((inputLine != null)) {
if (inputLine.length() > 0 && inputLine.contains("time")) {
time = inputLine.substring(inputLine.indexOf("time"));
break;
}
inputLine = in.readLine();
}
System.out.println("time --> " + time);
} catch (Exception ex) {
System.out.println(ex);
}
}
}
寫在小操之過急。
同樣在第一個答案中: String pingCmd =「ping」+ ip +「-t」 它應該是「ping -t」+ number + ip –
您可以調用ping命令並讀取輸出(如前面的答案中所述),或者如果您需要較低的控制桿訪問權限(就像您可以使用RAW套接字一樣),您可以查看jpcap java庫。
如圖所示here,您需要使用Runtime
類來提取ping。所有需要你的是解析輸入流(可能使用正則表達式來獲得時間ping值)。
public static void main(String[] args) {
System.out.println("Enter the host to be pinged : ");
Scanner sc = new Scanner(in);
String str = sc.next();
System.out.println("Enter the no. of packets to be sent : ");
int packets = sc.nextByte();
String pingResult;
int count=0;
try{
String command = "ping -c "+ packets +" -w 10 " + str;
Process process = Runtime.getRuntime().exec(command);
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String inputLine;
while ((inputLine = reader.readLine()) != null) {
if(count==packets+4) {
pingResult = (inputLine.substring(inputLine.indexOf("=")));
pingResult = (pingResult.substring
(pingResult.indexOf("/")+1,pingResult.indexOf("/")+7));
System.out.println(pingResult + " ms");
}
count++;
}
in.close();
if(count==0)System.out.println("Wrong host entered.");
}catch(Exception e){
System.out.println("Exception caught: " + e.toString());
}
}
}
輸出: 輸入主機被ping: 8.8.8.8 輸入no。數據包被髮送: 31.406毫秒
進程退出代碼爲0
歡迎來到Stack Overflow!感謝您的代碼片段,它可能會提供一些即時的幫助。通過展示*爲什麼*這是一個很好的解決方案,對未來的讀者會有更好的解決方案,這將爲它的教育價值提供一個合適的解釋[//大大提高](// meta.stackexchange.com/q/114762)但不完全相同的問題。請編輯您的答案以添加解釋,並指出適用的限制和假設。 –
這是查找平均時間來ping主機。 –
什麼「價值」你在找完了嗎? ping會返回許多值。 – user1329572