在 JDK 中提供了一个与 IP 地址相关的 InetAddress 类,该类用于封装一个 IP 地址,并提供了一系列与 IP 地址相关的方法。下表列举了 InetAddress 类的一些常用方法。
方法声明 | 功能描述 |
---|---|
InetAddress getByName(String host) | 参数 host 表示指定的主机,该方法用于在给定主机名的情况下确定主机的 IP 地址 |
InetAddress getLocalHost() | 创建一个表示本地主机的 InetAddress 对象 |
String getHostName() | 得到 IP 地址的主机名,如果是本机则是计算机名,不是本机则是主机名,如果灭有域名则是 IP 地址 |
boolean isReachable(int timeout) | 判断指定的时间内地址是否可以到达 |
String getHostAddress() | 得到字符串格式的原始 IP 地址 |
上表中列举了 InetAddress 的 5 个常用方法。其中,前两个方法用于获得该类的实例对象,第一个方法用于获得表示指定主机的 InetAddress 对象,第 2 个方法用于获得本地的 InetAddress 对象。通过 InetAddress 对象便可获取指定主机名、IP 地址等。接下来通过一个案例来演示 InetAddress 常用方法的使用,如下所示:
public class example01 {
public static void main(String[] args) throws Exception{
InetAddress locallAddress = InetAddress.getLocalHost();
System.out.println("本机的主机名:" + locallAddress.getHostName());
System.out.println("本机的 IP 地址:" + locallAddress.getHostAddress());
System.out.println(locallAddress + "\n");
InetAddress remoteAddress = InetAddress.getByName("baidu.com");
System.out.println("baidu 的 IP 地址:" + remoteAddress.getHostAddress());
System.out.println("3 秒是否可达:" + remoteAddress.isReachable(3000));
System.out.println("baidu 的主机名为:" + remoteAddress.getHostName());
}
}
运行结果如下所示:
从运行结果可以看出 InetAddress 类每个方法的作用。需要注意的是,getHostName()方法用于得到某个主机的域名。如果创建的 InetAddress 对象是用主机名创建的,则将该主机返回,否则,将根据 IP 地址反向查找对应的主机名,如果找到将其返回,否则返回 IP 地址。