The example of this article for everyone to share the Java Test network connectivity methods for your reference, the specific contents are as follows
The first way: Using the Java Runtime:
Java code
/** * Test Network * @param IP/private void getnetworkstate (String IP) {Runtime Runtime = Runtime.getruntime ();
try {log.info ("================= is testing network connectivity IP:" +IP);
Process process = Runtime.exec ("ping" +ip);
InputStream IStream = Process.getinputstream ();
InputStreamReader Isreader = new InputStreamReader (IStream, "UTF-8");
BufferedReader breader = new BufferedReader (Isreader);
String line = null;
StringBuffer sb = new StringBuffer ();
while (line = Breader.readline ())!= null) {sb.append (line);
} istream.close ();
Isreader.close ();
Breader.close ();
string result = new String (sb.tostring (). GetBytes ("UTF-8"));
Log.info ("Ping Result:" +result); if (! Stringutils.isblank (Result)) {if (Result.indexof ("ttl") > 0 | | | result.indexof ("TTL") > 0) {log.info (
"Network Normal, Time:" + timeutil.getcurdate ("Yyyy-mm-dd hh:mm:ss")); else {log.info ("Network Disconnected, Time:" + timeutil.getcurdate ("Yyyy-mm-dd hh: Mm:ss "));
(Exception e) {log.error ("Network exception:" +e.getmessage ());
E.printstacktrace ();
}
}
On the Windows platform, the above code does not, ping IP will end, and in the Linux Environment ping command, Ping impassability,
Will be stuck, Ping pass, will be uncertain output information, consider using a different way socket.
Second WAY socket:
Java code
Package 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.SocketException;
Import java.net.UnknownHostException;
Import java.util.Enumeration;
Import Org.apache.commons.lang.StringUtils;
Import Org.slf4j.Logger;
Import Org.slf4j.LoggerFactory; /** * Test Network connectivity * * @author Donald */public class Networkhelper {private static Logger log = Loggerfactory.getl
Ogger (Networkhelper.class);
private static Networkhelper instance = NULL;
public static synchronized Networkhelper getinstance () {if (instance = = null) {instance = new Networkhelper ();
return instance; /** * Test whether local can ping IP * * @param IP * @return/public boolean isreachip (String IP) {Boolean is
reach = false; try {inetaddress address = Inetaddress.getbyname (IP);//Ping This IP if address INstanceof java.net.Inet4Address) {log.info (IP + "is IPv4 address");
else if (address instanceof java.net.Inet6Address) {log.info (IP + ' is IPv6 address ');
else {log.info (IP + "is unrecongized");
} if (Address.isreachable (5000)) {Isreach = true;
Log.info ("success-ping" + IP + "with no interface specified");
else {Isreach = false;
Log.info ("failure-ping" + IP + "with no interface specified");
The catch (Exception e) {log.error ("error occurs:" + e.getmessage ());
return Isreach; /** * Test all local network card addresses can ping IP * * @param IP * @return/public boolean isreachnetworkinterfaces (stri
ng IP) {Boolean isreach = false; try {inetaddress address = Inetaddress.getbyname (IP);//Ping this IP if (address instanceof java.net.Inet4Ad
Dress) {log.info (IP + "is IPv4 address"); else if (addreSS instanceof Java.net.Inet6Address) {log.info (IP + "is IPv6 address");
else {log.info (IP + "is unrecongized");
} if (Address.isreachable (5000)) {Isreach = true;
Log.info ("success-ping" + IP + "with no interface specified");
else {Isreach = false;
Log.info ("failure-ping" + IP + "with no interface specified");
} if (Isreach) {log.info ("-------Trying different Interfaces--------");
Enumeration<networkinterface> netinterfaces = networkinterface. getnetworkinterfaces ();
while (Netinterfaces.hasmoreelements ()) {NetworkInterface ni = netinterfaces.nextelement ();
Log.info ("Checking interface, DisplayName:" + ni.getdisplayname () + ", Name:" + ni.getname ());
if (address.isreachable (NI, 0, 5000)) {Isreach = true;
Log.info ("success-ping" + IP); } ElSe {isreach = false;
Log.info ("failure-ping" + IP);
} enumeration<inetaddress> ips = Ni.getinetaddresses ();
while (Ips.hasmoreelements ()) {Log.info ("IP:" + ips.nextelement (). gethostaddress ());
} log.info ("-----------------check now NetworkInterface are done--------------------------");
The catch (Exception e) {log.error ("error occurs:" + e.getmessage ());
return Isreach; /** * Gets the native IP address that can establish a connection with the specified port of the remote host * @param remoteaddr * @param port * @return/public String Getreacha
Bleip (inetaddress remoteaddr, int port) {String retip = null;
Enumeration<networkinterface> netinterfaces;
try {netinterfaces = networkinterface.getnetworkinterfaces ();
while (Netinterfaces.hasmoreelements ()) {NetworkInterface ni = netinterfaces.nextelement (); enumeration<inetaddress> Localaddrs = Ni.getinetaddreSSEs ();
while (Localaddrs.hasmoreelements ()) {InetAddress localaddr = localaddrs.nextelement ();
if (isreachable (LOCALADDR, remoteaddr, Port, 5000)) {Retip = Localaddr.gethostaddress ();
Break SocketException e) {log.error ("error occurred while listing all"
Addresses: "+ e.getmessage ());
} if (Retip = = null) {Log.info ("null reachable local IP is found!");
else {log.info ("reachable local IP be found, it is" + retip);
return retip; /** * Gets the native IP address that can establish a connection with the specified port of the remote host * @param REMOTEIP * @param port * @return/public String getreachable
IP (string remoteip, int port) {string retip = null;
InetAddress remoteaddr = null;
Enumeration<networkinterface> netinterfaces;
try {remoteaddr = Inetaddress.getbyname (REMOTEIP);
Netinterfaces = Networkinterface.getnetworkinterfaces (); while (Netinterfaces.hasmoreelements ()) {NetworkInterface ni = netinterfaces.nextelement ();
enumeration<inetaddress> Localaddrs = ni.getinetaddresses ();
while (Localaddrs.hasmoreelements ()) {InetAddress localaddr = localaddrs.nextelement ();
if (isreachable (LOCALADDR, remoteaddr, Port, 5000)) {Retip = Localaddr.gethostaddress ();
Break Unknownhostexception e) {log.error ("error occurred while listing all"
Work addresses: "+ e.getmessage ()); }catch (SocketException e) {log.error ("error occurred while listing all of the local network addresses:" + e.getmessage
());
} if (Retip = = null) {Log.info ("null reachable local IP is found!");
else {log.info ("reachable local IP be found, it is" + retip);
return retip; /** * Test localinetaddr can be connected to a remote host specified port * * @param localinetaddr * @param remotEINETADDR * @param port * @param timeout * @return/public boolean isreachable (InetAddress localinetaddr,
InetAddress remoteinetaddr, int port, int timeout) {Boolean isreachable = false;
Socket socket = NULL;
try {socket = new socket ();
The port number set to 0 indicates that an available port is selected locally to connect socketaddress localsocketaddr = new Inetsocketaddress (localinetaddr, 0);
Socket.bind (LOCALSOCKETADDR);
Inetsocketaddress endpointsocketaddr = new Inetsocketaddress (remoteinetaddr, Port);
Socket.connect (endpointsocketaddr, timeout); Log.info ("Success-connection established! Local: "+ localinetaddr.gethostaddress () +" Remote: "+ remoteinetaddr.gethostaddress () +" port "+
Port);
Isreachable = true; The catch (IOException e) {log.error ("Failre-can not connect! Local: "+ localinetaddr.gethostaddress () +" Remote: "+ remoteinetaddr.gethostaddress () +" port "+
Port); finally {if (socket!= null) {try {socket.close ();
catch (IOException e) {log.error ("error occurred while closing socket:" + e.getmessage ());
}} return isreachable; /** * Test Localip can establish a connection with a remote host specified port * * @param localip * @param remoteip * @param port * @param time Out * @return */public boolean isreachable (String Localip, string remoteip, int port, int timeout) {bo
Olean isreachable = false;
Socket socket = NULL;
InetAddress localinetaddr = null;
InetAddress remoteinetaddr = null;
try {localinetaddr = Inetaddress.getbyname (Localip);
REMOTEINETADDR = Inetaddress.getbyname (REMOTEIP);
Socket = new socket ();
The port number set to 0 indicates that an available port is selected locally to connect socketaddress localsocketaddr = new Inetsocketaddress (localinetaddr, 0);
Socket.bind (LOCALSOCKETADDR); Inetsocketaddress endpointsocketaddr = new InetsoCketaddress (remoteinetaddr, Port);
Socket.connect (endpointsocketaddr, timeout); Log.info ("Success-connection established! Local: "+ localinetaddr.gethostaddress () +" Remote: "+ remoteinetaddr.gethostaddress () +" port "+
Port);
Isreachable = true; The catch (IOException e) {log.error ("Failre-can not connect! Local: "+ localinetaddr.gethostaddress () +" Remote: "+ remoteinetaddr.gethostaddress () +" port "+
Port);
finally {if (socket!= null) {try {socket.close ();
catch (IOException e) {log.error ("error occurred while closing socket:" + e.getmessage ());
}} return isreachable; public static void Main (string[] args) {if (Networkhelper.getinstance (). Isreachip ("192.168.126.128")) {Lo
G.info ("======= This machine can ping through IP:" + "192.168.126.128"); else{log.info ("======= native ping does not pass IP:" + "192.168.126.128 "); } if (Networkhelper.getinstance (). Isreachnetworkinterfaces ("192.168.126.128")) {Log.info ("======= All network adapters can ping I
P: "+" 192.168.126.128 ");
else{Log.info ("======= all network card ping not pass IP:" + "192.168.126.128");
String Localip = Networkhelper.getinstance (). GETREACHABLEIP ("192.168.126.128", 8081); if (!
Stringutils.isblank (Localip)) {log.info ("======= native can be associated with IP: +" 192.168.126.128 "+", Port: "+8081+" to establish a connected IP: "+localip);"
else{Log.info ("======= This machine can not be connected with IP: +" 192.168.126.128 "+", Port: "+8081+" to establish a connecting IP);
}
}
}
The above is the entire content of this article, I hope to help you learn, but also hope that we support the cloud habitat community.