在 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 常用方法的使用,如下所示:

    1. public class example01 {
    2. public static void main(String[] args) throws Exception{
    3. InetAddress locallAddress = InetAddress.getLocalHost();
    4. System.out.println("本机的主机名:" + locallAddress.getHostName());
    5. System.out.println("本机的 IP 地址:" + locallAddress.getHostAddress());
    6. System.out.println(locallAddress + "\n");
    7. InetAddress remoteAddress = InetAddress.getByName("baidu.com");
    8. System.out.println("baidu 的 IP 地址:" + remoteAddress.getHostAddress());
    9. System.out.println("3 秒是否可达:" + remoteAddress.isReachable(3000));
    10. System.out.println("baidu 的主机名为:" + remoteAddress.getHostName());
    11. }
    12. }

    运行结果如下所示:
    image.png
    从运行结果可以看出 InetAddress 类每个方法的作用。需要注意的是,getHostName()方法用于得到某个主机的域名。如果创建的 InetAddress 对象是用主机名创建的,则将该主机返回,否则,将根据 IP 地址反向查找对应的主机名,如果找到将其返回,否则返回 IP 地址。