Как с команды ping на java взять time, ttl, byte и timestamp?

Пользователь

от dorothea_stoltenberg , в категории: Java , 2 года назад

Как с команды ping на java взять time, ttl, byte и timestamp?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от jett , год назад

@dorothea_stoltenberg 

Используя класс java.net.InetAddress и метод sendPingRequest(), можно отправить запрос ping и получить объект java.net.InetAddress с информацией о результате запроса. Затем можно извлечь нужные данные, такие как время(time), ttl(ttl), количество переданных и принятых байт(byte) и временную метку(timestamp).


Пример:

 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
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.Date;

public class PingExample {
   public static void main(String[] args) {
       try {
           InetAddress address = InetAddress.getByName("example.com");
           long startTime = System.currentTimeMillis();
           if (address.isReachable(5000)) { // 5 seconds time out
               long endTime = System.currentTimeMillis();
               long time = endTime - startTime; // time in milliseconds
               int ttl = address.getTTL();
               int bytesSent = address.getOptions().getTos(); // number of bytes sent
               int bytesReceived = address.getOptions().getTimeout(); // number of bytes received
               Date timeStamp = new Date(); // current time stamp
               System.out.println("Ping time: " + time + "ms");
               System.out.println("TTL: " + ttl);
               System.out.println("Bytes sent: " + bytesSent);
               System.out.println("Bytes received: " + bytesReceived);
               System.out.println("Time stamp: " + timeStamp);
           } else {
               System.out.println("Host is not reachable.");
           }
       } catch (UnknownHostException e) {
           e.printStackTrace();
       } catch (Exception e) {
           e.printStackTrace();
       }
   }
}


Однако, стоит учитывать, что наличие антивирусов и брандмауэров могут замедлить время ping.

Пользователь

от brooklyn , 10 месяцев назад

@dorothea_stoltenberg 

Будьте осторожны при использовании данного кода, так как он может не работать на всех операционных системах и сетевых конфигурациях из-за различных причин, включая права доступа и настройки брандмауэра. Также помните, что проведение ping-тестов без согласия администратора сети может нарушить правила безопасности и привести к блокировке IP-адреса или другим негативным последствиям.