首先搞清楚网络上常用的几个类:
InetAddress表示IP地址,无论是IPV4,还是IPV6,Inet4Address表示IPV4,Inet6Address表示IPV6。 SocketAddress表示不依赖于具体协议的套接字地址抽象,InetSocketAddress表示IP地址的套接字地址,包含IP地址和端口号。
代码:
private static boolean isReachable(InetAddress netAddr, int port, int timeout) {
boolean isReachable = false;
Socket socket = null;
try {
socket = new Socket();
// Creates a socket address from an IP address and a port number
InetSocketAddress endpointSocketAddr = new InetSocketAddress(netAddr, port);
socket.connect(endpointSocketAddr, timeout);
System.out.println("SUCCESS - remote: " + netAddr.getHostAddress() + " port " + port);
isReachable = true;
} catch (IOException e) {
System.out.println("FAILRE - remote: " + netAddr.getHostAddress() + " port " + port);
} finally {
if (socket != null) {
try {
socket.close();
} catch (IOException e) {
System.out.println("Error occurred while closing socket..");
}
}
}
return isReachable;
}
参考:http://docs.oracle.com/javase/1.4.2/docs/api/java/net/InetSocketAddress.html