Este artículo comparte con usted el método Java para probar la conectividad de red para su referencia. El contenido específico es el siguiente
El primer método: use el tiempo de ejecución de Java:
Código Java
/** * Test Network * @param ip */private void getNetworkState (String IP) {Runtime Runtime = runtime.getRuntime (); Pruebe {log.info ("========================== Probar la conectividad de red IP:"+IP); Proceso process = runtime.exec ("ping" +ip); InputStream istream = Process.GetInputStream (); InputStreamReader isReader = new InputStreamReader (istream, "UTF-8"); BufferedReader Breader = new BufferedReader (isReader); Línea de cadena = nulo; StringBuffer sb = new StringBuffer (); while ((line = Breader.readline ())! = NULL) {sb.append (línea); } istream.close (); isReader.close (); Breader.close (); String result = new String (sb.ToString (). GetBytes ("utf-8")); log.info ("Resultado de ping:"+resultado); if (? } else {log.info ("La red está desconectada, TIME:" + TimeUtil.getCurDate ("yyyy-mm-dd hh: mm: ss")); }}} Catch (Exception e) {log.error ("Excepción de la red:"+E.getMessage ()); E.PrintStackTrace (); }} En la plataforma Windows, el código anterior no se usa y Ping IP finalizará. Sin embargo, cuando el comando ping no funciona en el entorno de Linux,
Será atascado, ping y información de salida de manera incierta. Considere usar otra forma de socket.
La segunda forma de socket:
Código Java
paquete com.util.network; import java.io.ioexception; import java.net.inetaddress; import java.net.inetsocketaddress; import java.net.networkinterface; import java.net.socket; import java.net.socketaddress; import java.net.socketaddress; import java.net.socket; java.net.unknownHostException; import java.util.enumeration; import org.apache.commons.lang.stringutils; import org.slf4j.logger; import og.slf4j.loggerFactory;/** * conectividad de la red * * * @Author Donald * */Public Red Networkhelper {privado Logger Logger loger = LoggerFactory.getLogger (networkHelper.class); Instancia privada de red estática) = NULL; public static sincronizado networkHelper getInstance () {if (instance == null) {instancia = new NetworkHelper (); } instancia de retorno; } / ** * Pruebe si el ping local ip * * @param ip * @return * / public boolean isReachip (string ip) {boolean isReach = false; Pruebe {la dirección inetaddress = inetAddress.getByName (ip); // ping esta ip if (dirección instanciaf java.net.inet4address) {log.info (ip + "es la dirección ipv4"); } else if (dirección instancia de java.net.inet6address) {log.info (IP + "es la dirección IPv6"); } else {log.info (ip + "no está reconocido"); } if (dirección.isReachable (5000)) {isReach = true; log.info ("éxito - ping" + ip + "sin interfaz especificada"); } else {isReach = false; log.info ("falla - ping" + ip + "sin interfaz especificada"); }} capt (excepción e) {log.error ("El error ocurre:" + E.getMessage ()); } return isReach; } / ** * Pruebe todas las direcciones de la tarjeta de red local para hacer ping las ip * * @param ip * @return * / public boolean isReachnetNetworkInterfaces (String IP) {boolean isReach = false; Pruebe {la dirección inetaddress = inetAddress.getByName (ip); // ping esta ip if (dirección instanciaf java.net.inet4address) {log.info (ip + "es la dirección ipv4"); } else if (dirección instancia de java.net.inet6address) {log.info (IP + "es la dirección IPv6"); } else {log.info (ip + "no está reconocido"); } if (dirección.isReachable (5000)) {isReach = true; log.info ("éxito - ping" + ip + "sin interfaz especificada"); } else {isReach = false; log.info ("falla - ping" + ip + "sin interfaz especificada"); } if (isReach) {log.info ("----------------"); Enumeration <NetworkInterface> netInterfaces = networkInterface .getNetWorkInterfaces (); while (netInterfaces.hasmoreElements ()) {networkInterface ni = netInterfaces.NextElement (); log.info ("Interfaz de comprobación, DisplayName:" + ni.getDisplayName () + ", nombre:" + ni.getName ()); if (dirección.isreachable (ni, 0, 5000)) {isReach = true; log.info ("éxito - ping" + ip); } else {isReach = false; log.info ("falla - ping" + ip); } Enumeración <inetaddress> iPs = ni.getInetAddresses (); while (ips.hasmoreelements ()) {log.info ("ip:" + ips.nextelement (). gethostaddress ()); } log.info ("----------------- Check Now NetworkInterface está realizado --------------------------"); }}} capt (excepción e) {log.error ("El error ocurre:" + E.getMessage ()); } return isReach; } / ** * Obtenga la dirección IP nativa que puede establecer una conexión con el puerto especificado del host remoto * @param remotaaddr * @param * @return * / public string getReachableIP (inetAddress remoTeaddr, int port) {string retip = null; Enumeración <NetworkInterface> NetInterfaces; intente {netInterfaces = networkInterface.getNetworkInterfaces (); while (netInterfaces.hasmoreElements ()) {networkInterface ni = netInterfaces.NextElement (); Enumeración <inetaddress> localaddrs = ni.getInetAddresses (); while (localaddrs.hasmoreelements ()) {inetaddress localaddr = localaddrs.nextelement (); if (isReachable (localaddr, remoTeaddr, puerto, 5000)) {retip = localaddr.gethostaddress (); romper; }}}} Catch (SocketException e) {log.error ("El error ocurrió al enumerar todas las direcciones de red locales:" + E.getMessage ()); } if (retip == null) {log.info ("¡Se encuentra IP local accesible nulo!"); } else {log.info ("Se encuentra IP local alcanzable, es" + retip); } return retip; } / ** * Obtenga la dirección IP nativa que puede establecer una conexión con el puerto especificado del host remoto * @param remotos * @param puerto * @return * / public string getReachableIP (string remotionip, int puerto) {string retip = null; Inetaddress remoteaddr = null; Enumeración <NetworkInterface> NetInterfaces; intente {remoTeAddr = inetAddress.getByName (remoteip); netInterfaces = networkInterface.getNetWorkInterfaces (); while (netInterfaces.hasmoreElements ()) {networkInterface ni = netInterfaces.NextElement (); Enumeración <inetaddress> localaddrs = ni.getInetAddresses (); while (localaddrs.hasmoreelements ()) {inetaddress localaddr = localaddrs.nextelement (); if (isReachable (localaddr, remoTeaddr, puerto, 5000)) {retip = localaddr.gethostaddress (); romper; }}}} Catch (desconocidoHosTexception e) {log.error ("El error ocurrió al enumerar todas las direcciones de red locales:"+ E.getMessage ()); } Catch (SocketException e) {log.error ("El error ocurrió al enumerar todas las direcciones de red locales:"+ E.getMessage ()); } if (retip == null) {log.info ("¡Se encuentra IP local accesible nulo!"); } else {log.info ("Se encuentra IP local alcanzable, es" + retip); } return retip; } / ** * Pruebe si localInetAdDR puede establecer una conexión con el puerto de host remoto especificado * * @param localInetaddr * @param remotionInetaddr * @param * @param timeOut * @return * / public boolean isreachable (inetaddress localInetDdr, inetaddress remotesetadadDDRDR, int portort, intimio) {boolean es reinseyable; Socket de socket = nulo; intente {socket = new Socket (); // Establecer el número de puerto en 0 para indicar que selecciona un puerto disponible localmente para la conexión. SocketAddress localsocketadDR = nuevo inetSocketAddress (localInetaddr, 0); socket.bind (localsocketaddr); InetSocketAddress endpointSocketAddr = nuevo inetSocketAddress (remotSinetAddr, puerto); Socket.connect (EndPointSocketAddr, Tiempo de espera); log.info ("éxito - Conexión establecida! Local:" + localInetaddr.gethostaddress () + "remoto:" + remotoinetaddr.gethostaddress () + "puerto" + puerto); isReachable = verdadero; } Catch (ioException e) {log.error ("failre - no puede conectarse! local:" + localInetDdr.gethostaddress () + "remoto:" + remotoinetaddr.gethostaddress () + "puerto" + puerto); } Finalmente {if (Socket! = Null) {try {Socket.close (); } Catch (ioException e) {log.error ("El error ocurrió al cerrar el socket:" + e.getMessage ()); }}} return isReachable; } / ** * Pruebe si Localip puede establecer una conexión con el puerto de host remoto especificado * * @param localip * @param remotosip * @param puerto * @param timeout * @return * / public boolean isReachable (string localip, string remotionip, int puerto, int timeout) {boolean está enrajable = falso; Socket de socket = nulo; Inetaddress localinetaddr = null; InetAddress remoteInetaddr = null; intente {localInetAddr = inetAddress.getByName (localip); RemoteInetAddr = inetAddress.getByName (remotos); socket = new Socket (); // Establecer el número de puerto en 0 para indicar que selecciona un puerto disponible localmente para la conexión. SocketAddress localsocketadDR = nuevo inetSocketAddress (localInetaddr, 0); socket.bind (localsocketaddr); InetSocketAddress endpointSocketAddr = nuevo inetSocketAddress (remotSinetAddr, puerto); Socket.connect (EndPointSocketAddr, Tiempo de espera); log.info ("éxito - Conexión establecida! Local:" + localInetaddr.gethostaddress () + "remoto:" + remotoinetaddr.gethostaddress () + "puerto" + puerto); isReachable = verdadero; } Catch (ioException e) {log.error ("failre - no puede conectarse! local:" + localInetDdr.gethostaddress () + "remoto:" + remotoinetaddr.gethostaddress () + "puerto" + puerto); } Finalmente {if (Socket! = Null) {try {Socket.close (); } Catch (ioException e) {log.error ("El error ocurrió al cerrar el socket:" + e.getMessage ()); }}} return isReachable; } public static void main (string [] args) {if (networkHelper.getInstance (). IsReachip ("192.168.126.128")) {log.info ("========= Native puede hacer la IP:"+"192.168.126.128"); } else {log.info ("========== Ping nativo no hace ping la IP:"+"192.168.126.128"); } if (networkHelper.getInstance (). IsReachNetWorkInterfaces ("192.168.126.128"))) {log.info ("========= todas las tarjetas de red en la máquina pueden hacer ping a la IP:"+"192.168.126.128"); } else {log.info ("======== todas las tarjetas de red en la máquina no pueden hacer ping a la IP:"+"192.168.126.128"); } String localip = networkHelper.getInstance (). GetReachableIP ("192.168.126.128", 8081); if (! stringUtils.isblank (localip)) {log.info ("========= La máquina nativa puede establecer una IP para la conexión con IP:"+"192.168.126.128"+", puerto:"+8081+ ":"+localip); } else {log.info ("======= La máquina nativa no puede establecer una IP para la conexión con IP:"+"192.168.126.128"+", puerto:"+8081+ ""); }}} Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.