Java: Fazer ping em um servidor

Palavras-chave: ping, ICMP, java.net.InetAddress, isReachable, Java 5

A partir do Java 5, fazer ping em um servidor usando Java ficou bastante simples. É só usar o método isReachable da classe java.net.InetAddress.

O método a seguir usa isReachable para pingar um servidor com tempo limite de cinco segundos (timeout igual a 5000 milisegundos):

private static void pingar(String host) {
  try {
    if (InetAddress.getByName(host).isReachable(5000))
      System.out.println("Ping OK: " + host);
    else
      System.out.println("Ping FALHOU: " + host);
  } catch (Exception e) {
    System.err.println("Ping FALHOU: " + host + " - " + e);
  }
}

Podemos testar este código da seguinte maneira:

pingar("www.google.com");
pingar("localhost");
pingar("www.umgooglequenaoexiste.com");

E uma possível execução é:

Ping FALHOU: www.google.com
Ping OK: localhost
Ping FALHOU: www.umgooglequenaoexiste.com -
	java.net.UnknownHostException: www.umgooglequenaoexiste.com

Neste caso, o servidor do Google foi encontrado no DNS, mas não se conseguiu pingá-lo. O host local pingou fácil e o último nome não foi encontrado no DNS.

O método isReachable funciona como um ping, mas é um pouco mais que isso. A implementação normalmente tentará enviar uma mensagem ICMP Echo Request. Caso não consiga, tentará abrir uma conexão TCP à porta 7.

This entry was posted in Java. Bookmark the permalink.

4 Responses to Java: Fazer ping em um servidor

  1. Lucia says:

    O metodo .isReachable(5000) não funciona no windows

  2. Leonardo says:

    Obrigado, ajudou muito.

    Alguma idéia de como eu faço isso mas passando por um proxy?

  3. Lionel Sousa says:

    Bao informação!

    Vc teria com enviar o código da da parte gráfica?

    Flw

  4. Muito bom o exemplo. Resolveu meu problema.

Leave a Reply

Your email address will not be published. Required fields are marked *