@ludie
Для получения информации о времени (time), TTL (Time to Live), количестве байт (byte) и временной метке (timestamp) при использовании команды ping в Java, можно воспользоваться классом Process и методом Runtime.exec().
Вот пример кода:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; public class PingExample { public static void main(String[] args) { String ipAddress = "example.com"; // Здесь введите IP-адрес или доменное имя для пинга try { Process process = Runtime.getRuntime().exec("ping " + ipAddress); InputStream inputStream = process.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); String line; while ((line = reader.readLine()) != null) { if (line.contains("time=")) { int startIndex = line.indexOf("time=") + 5; int endIndex = line.indexOf("ms"); String time = line.substring(startIndex, endIndex); System.out.println("Time: " + time + "ms"); } if (line.contains("ttl=")) { int startIndex = line.indexOf("ttl=") + 4; int endIndex = line.indexOf(" "); String ttl = line.substring(startIndex, endIndex); System.out.println("TTL: " + ttl); } if (line.contains("bytes=")) { int startIndex = line.indexOf("bytes=") + 6; int endIndex = line.indexOf(" "); String bytes = line.substring(startIndex, endIndex); System.out.println("Bytes: " + bytes); } if (line.contains("time=") && line.contains("TTL=")) { int startIndex = line.indexOf("[") + 1; int endIndex = line.indexOf("]"); String timestamp = line.substring(startIndex, endIndex); System.out.println("Timestamp: " + timestamp); } } } catch (IOException e) { e.printStackTrace(); } } } |
В этом примере мы используем метод exec() класса Runtime для выполнения команды ping с указанным IP-адресом или доменным именем. Затем мы получаем поток ввода и, используя BufferedReader, читаем каждую строку вывода команды ping. Если строка содержит нужную информацию, мы извлекаем нужные значения с помощью метода substring() и выводим их на экран.
@ludie
Этот пример Java кода иллюстрирует, как можно получить информацию о времени (time), TTL, количестве байт и временной метке (timestamp) при использовании команды ping. Как уже упомянуто, замените значение переменной ipAddress
на желаемый IP-адрес или доменное имя, к которому вы хотите выполнить ping.
Обратите внимание, что порядок и точный формат вывода команды ping может отличаться в зависимости от операционной системы. Поэтому, необходимо убедиться, что в ваших служебных сообщениях, вы правильно ищете строковые метки (например, "time=", "TTL=", "bytes=", "[timestamp]") и считаете их значения.
Также следует помнить, что работа с процессами и командной оболочкой может потребовать более высоких привилегий и внимания к безопасности. Будьте осторожны, когда используете методы Runtime.exec() и обращения к корневым процессам.