Este artigo compartilha com você o método Java para testar a conectividade da rede para sua referência. O conteúdo específico é o seguinte
O primeiro método: use o tempo de execução do Java:
Código Java
/** * Rede de teste * @param ip */private void getNetworkState (string ip) {RUNTime RunTime = RunTime.getRuntime (); tente {log.info ("========================= Testando a conectividade da rede IP:"+IP); Process de processo = RUNTime.exec ("ping" +ip); InputStream isTream = process.getInputStream (); InputStreamReader isreader = new InputStreamReader (iStream, "utf-8"); BufferredReader Breader = New BufferredReader (IsReader); Linha de string = null; StringBuffer sb = new StringBuffer (); while ((line = paner.readline ())! = null) {sb.append (line); } isTream.close (); isreader.close (); pão.close (); String resultado = new String (sb.toString (). GetBytes ("utf-8")); log.info ("resultado do ping:"+resultado); if (! stringUtils.isblank (resultado)) {if (result.Indexof ("ttl")> 0 || result.Indexof ("ttl")> 0) {log.info ("rede é normal, time:" + timeUtil.getcurdate ("yyyy-mm-dd hh: mm: ss"); } else {log.info ("rede está desconectada, tempo:" + timeutil.getcurdate ("yyyy-mm-dd hh: mm: ss")); }}} catch (Exceção e) {log.error ("Exceção de rede:"+e.getMessage ()); E.PrintStackTrace (); }} Na plataforma Windows, o código acima não é usado e o ping IP terminará. No entanto, quando o comando ping não está funcionando no ambiente Linux,
Ele ficará preso, ping e informações de saída de maneiras incertas. Considere usar outra maneira de soquete.
A segunda maneira de soquete:
Código Java
pacote com.util.network; importar java.io.ioException; importar java.net.inetaddress; importar java.net.inetsocketaddress; importar java.net.networkinterface; importação java.net.socket; import java.net.socketRest; importen; java.net.unknownhosTexception; importar java.util.enumeration; importar org.apache.commons.lang.stringutils; importar org.slf4j.logger; importação org.slf4j.loggerFactory;/** ** ** **l. LoggerFactory.getLogger (NetworkHelper.class); Instância estática privada do NetworkHelper = NULL; public estático sincronizado NetworkHelper getInstance () {if (instance == null) {instance = new NetworkHelper (); } Instância de retorno; } / ** * Teste se o ping local * * @param ip * @return * / public boolean isreachip (string ip) {boolean isreach = false; tente {inetAddress endereço = inetAddress.getbyName (ip); // ping este ip if (Instância de endereço de java.net.inet4address) {log.info (ip + "é endereço IPv4"); } else if (Instância de endereço de java.net.inet6address) {log.info (ip + "é endereço IPv6"); } else {log.info (ip + "não é reconhecido"); } if (endereço.isreachable (5000)) {isreach = true; log.info ("Sucesso - ping" + ip + "sem interface especificada"); } else {isreach = false; log.info ("Falha - ping" + ip + "sem interface especificada"); }} catch (Exceção e) {log.error ("Ocorre Erro:" + E.getMessage ()); } retornar Isreach; } / ** * Teste todos os endereços de rede local para pinar o ip * * @param ip * @return * / public boolean isreachNetworkInterfaces (string ip) {boolean isreach = false; tente {inetAddress endereço = inetAddress.getbyName (ip); // ping este ip if (Instância de endereço de java.net.inet4address) {log.info (ip + "é endereço IPv4"); } else if (Instância de endereço de java.net.inet6address) {log.info (ip + "é endereço IPv6"); } else {log.info (ip + "não é reconhecido"); } if (endereço.isreachable (5000)) {isreach = true; log.info ("Sucesso - ping" + ip + "sem interface especificada"); } else {isreach = false; log.info ("Falha - ping" + ip + "sem interface especificada"); } if (isreach) {log.info ("----------------"); Enumeração <NetworkInterface> netInterfaces = NetworkInterface .getNetworkInterfaces (); while (netInterfaces.hasMoreElements ()) {NetworkInterface ni = netInterfaces.nextElement (); Log.info ("Interface de verificação, DisplayName:" + ni.getDisplayName () + ", nome:" + ni.getName ()); if (endereço.isreachable (ni, 0, 5000)) {isreach = true; log.info ("Sucesso - ping" + ip); } else {isreach = false; log.info ("falha - ping" + ip); } Enumeração <inetAddress> ips = ni.getinetaddresses (); while (ips.hasMoreElements ()) {log.info ("ip:" + ips.nextElement (). gethostaddress ()); } log.info ("----------------- Verifique agora o NetworkInterface é concluído --------------------------"); }}} catch (Exceção e) {log.error ("Ocorre Erro:" + E.getMessage ()); } retornar Isreach; } / ** * Obtenha o endereço IP nativo que pode estabelecer uma conexão com a porta especificada do host remoto * @param remoteaddr * @param porta * @return * / public string getReachableip (inetaddress remoteaddr, int porta) {string retip = null; Enumeração <NetworkInterface> NetInterfaces; tente {netInterfaces = networkInterface.getNetworkInterfaces (); while (netInterfaces.hasMoreElements ()) {NetworkInterface ni = netInterfaces.nextElement (); Enumeração <netAddress> localAddrs = ni.getinetaddresses (); while (localAddrs.hasMoreElements ()) {inetAddress localAddr = localAddrs.NextElement (); if (isreachable (localAddr, remoteaddr, porta, 5000)) {retip = localaddr.gethostaddress (); quebrar; }}}} catch (Socketexception e) {log.error ("Ocorreu o erro ao listar todos os endereços de rede local:" + e.getMessage ()); } if (retip == null) {log.info ("IP local alcance nulo é encontrado!"); } else {log.info ("IP local acessível é encontrado, é" + retip); } retornar retIP; } / ** * Obtenha o endereço IP nativo que pode estabelecer uma conexão com a porta especificada do host remoto * @param remoteip * @param porta * @return * / public string getReachableip (string remoteip, int porta) {string retip = null; InetAddress remoteaddr = null; Enumeração <NetworkInterface> NetInterfaces; tente {remoteaddr = inetAddress.getByName (remoteip); netInterfaces = NetworkInterface.getNetworkInterfaces (); while (netInterfaces.hasMoreElements ()) {NetworkInterface ni = netInterfaces.nextElement (); Enumeração <netAddress> localAddrs = ni.getinetaddresses (); while (localAddrs.hasMoreElements ()) {inetAddress localAddr = localAddrs.NextElement (); if (isreachable (localAddr, remoteaddr, porta, 5000)) {retip = localaddr.gethostaddress (); quebrar; }}}} Catch (UnknownHostException e) {Log.error ("Ocorreu o erro ao listar todos os endereços de rede local:"+ e.getMessage ()); } catch (Socketexception e) {log.error ("Ocorreu o erro ao listar todos os endereços de rede local:"+ e.getMessage ()); } if (retip == null) {log.info ("IP local alcance nulo é encontrado!"); } else {log.info ("IP local acessível é encontrado, é" + retip); } retornar retIP; } / ** * Teste se o LocalINETAddr pode estabelecer uma conexão com a porta especificada do host remoto * * @param localinetaddr * @param remoteinetaddr * @param porta * @param timeout * @return * / public booolean isreachable (inetaddress timeTaddr, inTAddROnTol Soquete soquete = nulo; tente {socket = new Socket (); // Defina o número da porta como 0 para indicar que você seleciona uma porta disponível localmente para conexão. SocketAddress LocalsocketAddr = new InetSocketAddress (LocalineTAddr, 0); Socket.bind (localSocketAddr); InetSocketAddress endpointSocketAddr = new inetSocketAddress (remoteineTAddr, porta); Socket.Connect (EndPointSocketAddr, Timeout); Log.info ("Sucesso - Conexão estabelecida! Local:" + LocalineTaddr.gethostAddress () + "Remote:" + RemoteineTAddr.gethostAddress () + "porta" + porta); isreachable = true; } catch (ioexception e) {log.error ("Failre - não pode se conectar! Local:" + localinetaddr.gethostAddress () + "remoto:" + remoteineTaddr.gethostAddress () + "porta" + porta); } finalmente {if (soquete! = null) {tente {socket.close (); } catch (ioexception e) {log.error ("Ocorreu o erro ao fechar o soquete:" + e.getMessage ()); }}} retorna isreachable; } / ** * Teste se o Localip pode estabelecer uma conexão com a porta do host remoto especificado * * @param localip * @param remoteip * @param porta * @param timeout * @return * / public boolean isreachable (string localip, string remoteip, intt, int timeout) {boolean isReachable = false; Soquete soquete = nulo; InetAddress localineTAddr = null; InetAddress remoteineTAddr = null; tente {localineTAddr = inetaddress.getbyName (localip); remoteineTAddr = inetaddress.getByName (remoteip); soquete = new soket (); // Defina o número da porta como 0 para indicar que você seleciona uma porta disponível localmente para conexão. SocketAddress LocalsocketAddr = new InetSocketAddress (LocalineTAddr, 0); Socket.bind (localSocketAddr); InetSocketAddress endpointSocketAddr = new inetSocketAddress (remoteineTAddr, porta); Socket.Connect (EndPointSocketAddr, Timeout); Log.info ("Sucesso - Conexão estabelecida! Local:" + LocalineTaddr.gethostAddress () + "Remote:" + RemoteineTAddr.gethostAddress () + "porta" + porta); isreachable = true; } catch (ioexception e) {log.error ("Failre - não pode se conectar! Local:" + localinetaddr.gethostAddress () + "remoto:" + remoteineTaddr.gethostAddress () + "porta" + porta); } finalmente {if (soquete! = null) {tente {socket.close (); } catch (ioexception e) {log.error ("Ocorreu o erro ao fechar o soquete:" + e.getMessage ()); }}} retorna isreachable; } public static void main (string [] args) {if (networkhelper.getInstance (). Isreachip ("192.168.126.128")) {log.info ("======== Native ping o ip:"+"192.168.126.128"); } else {log.info ("========= Native ping não ping não ping:"+"192.168.126.128"); } if (networkhelper.getInstance (). IsreachNetworkInterfaces ("192.168.126.128"))) {log.info ("======== todas as cartões de rede na máquina podem ping o IP:" "" 192.168.126.128 "); } else {log.info ("======== Todos os cartões de rede na máquina não podem pinar o IP:"+"192.168.126.128"); } String localip = NetworkHelper.getInstance (). GetReachableip ("192.168.126.128", 8081); if (! stringUtils.isblank (localip)) {log.info ("========= Machine nativa puder estabelecer um IP para conexão com IP:"+"192.168.126.128"+", porta:"+8081+ ":"+localip); } else {log.info ("======= Machine nativa não pode estabelecer um IP para conexão com IP:"+"192.168.126.128"+", porta:"+8081+ ""); }}} O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.