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.
O metodo .isReachable(5000) não funciona no windows
Obrigado, ajudou muito.
Alguma idéia de como eu faço isso mas passando por um proxy?
Bao informação!
Vc teria com enviar o código da da parte gráfica?
Flw
Muito bom o exemplo. Resolveu meu problema.