InetAddress 类

一、核心作用

InetAddress 是 Java 中用于表示 IP 地址 的类(位于 java.net 包下),封装了 IP 地址的相关信息(如主机名、IP 地址字符串等),提供了操作 IP 地址的常用方法,是网络编程中处理 IP 地址的基础工具。

二、主要特点

  1. 无构造方法:不能直接通过 new 创建对象,需通过类提供的静态方法获取实例。
  2. 封装 IP 信息:包含主机名(如 www.baidu.com)和 IP 地址(如 180.101.50.242),支持 IPv4 和 IPv6 地址。

三、常用静态方法(获取实例)

方法 功能描述
InetAddress.getByName(String host) 根据主机名(如域名)或 IP 地址字符串,获取对应的 InetAddress 实例。

例:InetAddress.getByName("www.baidu.com") 或 getByName("127.0.0.1")
InetAddress.getLocalHost() 获取本机的 InetAddress 实例(包含本机主机名和 IP 地址)。
InetAddress.getAllByName(String host) 获取指定主机名对应的所有 IP 地址(一个域名可能对应多个 IP),返回 InetAddress[] 数组。

四、常用实例方法(获取信息)

方法 功能描述
String getHostAddress() 返回 IP 地址的字符串形式(如 127.0.0.1)。
String getHostName() 返回主机名(若无法解析,返回 IP 地址字符串)。
boolean isLoopbackAddress() 判断当前 IP 地址是否为 本机回路地址(如 127.0.0.1 或 IPv6 的 ::1)。
boolean isReachable(int timeout) 测试当前 IP 地址对应的主机是否可达(超时时间单位:毫秒),返回 true 表示可达。

五、示例代码

java

运行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import java.net.InetAddress;
import java.net.UnknownHostException;

public class InetAddressDemo {
public static void main(String[] args) throws UnknownHostException {
// 1. 通过域名获取IP信息
InetAddress baidu = InetAddress.getByName("www.baidu.com");
System.out.println("百度主机名:" + baidu.getHostName());
System.out.println("百度IP地址:" + baidu.getHostAddress());

// 2. 获取本机IP信息
InetAddress local = InetAddress.getLocalHost();
System.out.println("本机主机名:" + local.getHostName());
System.out.println("本机IP地址:" + local.getHostAddress());

// 3. 判断是否为回路地址
System.out.println("是否为回路地址:" + local.isLoopbackAddress()); // 若本机IP是127.0.0.1则返回true
}
}

六、核心总结

InetAddress 是 Java 网络编程中处理 IP 地址的核心类,通过它可以轻松获取主机的 IP 地址、主机名等信息,是 SocketDatagramSocket 等套接字类实现网络通信的基础(例如创建 Socket 时需传入目标主机的 InetAddress 和端口号)。