java为网络提供了java.net包,该包下的URL和URLConnection等类提供了已编程方式访问的web服务的功能。
java提供了InetAddress类来代表ip地址。
IntetAddress并没有构造器,而是提供了如下的两个静态的方法来获取InetAddress实例。
- getByName():根据主机获取对应的InetAddrress对象。
- getByAddress():根据原始的IP地址获取对应的InetAddress()对象
- 他提供了三个方法来获取InetAddress实例对应的ip地址和主机名:
①String getCanonicalHostName():用来获取局域网内的一台主机名
②String getHostAddress():获取ip地址的字符串
③String getHostName():获取ip地址的主机别名
InetAddress还提供了一个isReachable(timeout)的方法,用于测试是否可以到达该地址(主机)。防火墙或者服务器配置可能阻塞请求。
代码段
import java.net.InetAddress;
public class ping {
public static void main(String[] args) {
try {
//通过InetAddress类访问主机名,ip地址
InetAddress indress = InetAddress.getByName("www.baidu.com");//获取对应Ip的inetAddress对象 存储了IP的主机名和ip地址
String hostName = indress.getHostName(); //获取主机名
String hostAddress = indress.getHostAddress(); //获取ip地址
String hostAddress1 = indress.getCanonicalHostName(); //获取ip地址
System.out.println(hostAddress1); //输出ip地址
System.out.println(indress); //输出主机名/ip地址
System.out.println(hostName); //输出主机名
System.out.println(hostAddress); //输出ip地址
System.out.println("----------------");
//获取本机地址
InetAddress localHost = InetAddress.getLocalHost(); //获取本机地址
String hostName1 = localHost.getHostName();
String hostAddress2 = localHost.getHostAddress();
String canonicalHostName = localHost.getCanonicalHostName();
System.out.println(hostName1);
System.out.println(hostAddress2);
System.out.println(canonicalHostName);
System.out.println("----------------");
//通过ip获取InetAddress实例获取对应ip地址的信息
InetAddress byAddress = InetAddress.getByAddress(new byte[]{127,0,0,1});
System.out.println("ip的主机: "+byAddress.getHostName()+" ip的ip: "+byAddress.getHostAddress());
System.out.println("----------------");
//返回sougou连接结果
boolean ping = ping("www.sogou.com");
System.out.println(ping);
} catch (Exception e) {
System.out.println("这个ip地址不可用");
e.printStackTrace();
}
}
public static boolean ping(String ipAddress) throws Exception {
int timeOut = 3000 ; //超时应该在3钞以上
//isReachable(timeout)的方法,用于测试是否可以到达该地址(主机)
boolean status = InetAddress.getByName(ipAddress).isReachable(timeOut);
// 当返回值是true时,说明host是可用的,false则不可。
return status;
}
}