Como implementar seu próprio método InetAddress.isReachable (String address, int port, int timeout) em Java?

Publicados: 2020-10-06
Implemente seu próprio método InetAddress.isReachable em Java

Em Java, existem várias maneiras de verificar o ping e a verificação da porta. Você pode usar o comando ping do padrão do sistema, o utilitário InetAddress do método nativo do Java, HttpURLConnection e muito mais.

Na produção ou em seu ambiente de teste, se você deseja executar várias verificações de porta, digamos centenas de verificações ao mesmo tempo, às vezes o método InetAddress.isReachable() não está obtendo a resposta correta.

Infect no meu caso, notei 100% de falha ao tentar me conectar ao www.google.com. Você tem alguma das perguntas abaixo?

  • java – Por que InetAddress.isReachable retorna false, quando posso pingar o endereço IP?
  • Como verificar se tenho conexão com a internet?
  • Exemplos de código Java para java.net.InetAddress.isReachable()
  • java verifique se o endereço IP está acessível
  • Como testar se um sistema remoto é alcançável?

Siga este tutorial se quiser realizar a verificação de ping usando HttpURLConnection.openConnection()

Neste tutorial, abordaremos 2 maneiras diferentes de realizar a verificação de Ping:

  1. Método InetAddress.isReachable(timeout)
  2. O método crunchifyAddressReachable(host, port, timeout) do Crunchify que funciona 100% do tempo

Vamos começar:

  1. Crie a classe CrunchifyInetAddressIsReachable.java.
  2. Criaremos 2 métodos pingCheckbyInetAddressisReachable() e pingCheckbyCrunchifyisReachable() nos quais realizaremos acima de 2 testes diferentes.

Que método estamos usando crunchifyAddressReachable()?

Estamos usando java.net.Socket em nossa implementação. A classe Socket implementa os soquetes do cliente. Com a ajuda do utilitário connect() estamos obtendo 100% do resultado correto do tempo. Por favor, dê uma olhada no código abaixo para mais detalhes.

CrunchifyInetAddressIsReachable.java

Depois de copiar o código para o ambiente Eclipse, basta executar como Java Application para ver o resultado abaixo.

Saída do console: