Если вам просто нужно пропинговать и получить время отклика, то чтение вывода с консоли может оказаться излишним. Существует более простой способ, если вы используете Java5 или новее:
Вот полная программа, которую вы можете использовать для этого. ПРИМЕЧАНИЕ. В Unix / Linux / Mac OS вы должны запустить эту программу под «sudo», чтобы получить ответ от чего-либо, кроме «localhost».
import java.net.InetAddress;
import java.io.IOException;
class PingTest {
public static void main(String[] args) {
try {
String hostnameOrIP = args[0];
int timeout = Integer.parseInt(args[1]);
int pingCount = Integer.parseInt(args[2]);
System.out.println("Pinging '" + hostnameOrIP + "'");
for (int i = 0; i < pingCount; i++) {
System.out.println("Response time: " + getPingResponseTime(hostnameOrIP, timeout));
}
} catch (Exception e) {
System.out.println("Usage: java PingTest <hostname/IP address> <timeout in milliseconds> <number of pings to send>\n");
}
}
static long getPingResponseTime(String hostnameOrIP, int timeout) {
long startTime = System.currentTimeMillis();
boolean successfulPing = false;
try {
successfulPing = InetAddress.getByName(hostnameOrIP).isReachable(timeout);
} catch (IOException ioe) {
successfulPing = false;
}
long endTime = System.currentTimeMillis();
long responseTime = endTime-startTime;
if (successfulPing == false)
responseTime = -1;
return responseTime;
}
}
Вот результаты, которые я получил, когда запустил следующее на Mac OS (результаты в миллисекундах):
$ sudo java PingTest google.com 5000 5
Pinging 'google.com'
Response time: 419
Response time: 15
Response time: 15
Response time: 16
Response time: 16
Время отклика может варьироваться между запусками, но я вижу <20 миллисекунд времени отклика для большинства крупных сайтов, особенно если вы запускаете несколько пингов </p>