java.net.InetAddress
1. 类的基本作用
java.net.InetAddress
类用于封装计算机的 IP 地址和 DNS 信息(不包含端口) ,是 Java 对网络中主机 IP 地址的 “高层表示” ,为网络编程提供基础的地址封装能力,在 Socket
(套接字通信 )、ServerSocket
(服务端套接字 )、URL
(网络资源定位 )、DatagramSocket
(UDP 通信套接字 )、DatagramPacket
(UDP 数据报 )等网络相关类的使用中,常作为地址标识支撑功能实现。
2. 常用静态方法
getLocalHost()
:获取代表本机的InetAddress
对象,该对象封装了本机的 IP 地址和主机名信息,可用于标识本机在网络编程场景里的地址。getByName(String host)
:传入目标主机的 主机名(如www.baidu.com
)或 IP 地址(如192.168.1.1
),返回对应的InetAddress
对象,获取目标主机的 IP 与主机名 。底层会自动连接 DNS 服务器进行域名解析(传入主机名时 ),将域名转换为 IP 。
3. 常用实例方法
getHostAddress()
:调用该方法,可从InetAddress
对象中获取对应主机的 IP 地址字符串 ,如得到192.168.1.100
这类结果,用于明确主机的 IP 标识。getHostName()
:用于获取InetAddress
对象对应的 主机名或域名 ,若为本地主机,返回本机主机名;若为网络域名(如百度 ),返回对应的域名(www.baidu.com
) ,帮助识别主机的网络名称。
问题
问题:
java.net.InetAddress
类在 Java 网络编程中的主要作用是什么?它封装了哪些核心信息?
答案:InetAddress
类的主要作用是作为 Java 对网络中主机 IP 地址的高层表示,封装主机的网络标识信息,为Socket
、ServerSocket
等网络类提供地址支持。它封装的核心信息包括主机的 IP 地址和主机名 / 域名(不包含端口信息)。问题:
InetAddress
类的getLocalHost()
方法有什么功能?调用后会返回什么?
答案:getLocalHost()
是InetAddress
类的静态方法,功能是获取代表本机的InetAddress
对象。调用后返回的对象中封装了本机的 IP 地址和主机名信息。问题:如何通过
InetAddress
类获取百度域名(www.baidu.com
)对应的 IP 地址?请简述步骤。
答案:步骤如下:- 调用
InetAddress.getByName("www.baidu.com")
方法,传入百度域名,获取对应的InetAddress
对象(该方法会自动进行 DNS 解析); - 调用该对象的
getHostAddress()
方法,即可得到百度的 IP 地址字符串。
- 调用
问题:
InetAddress
类的getHostAddress()
和getHostName()
方法的返回结果有何不同?
答案:getHostAddress()
返回的是对应主机的 IP 地址字符串(如110.242.68.66
);getHostName()
返回的是对应主机的主机名或域名(如本机可能返回电脑名,www.baidu.com
可能返回其域名)。问题:编写 Java 代码,使用
InetAddress
类获取本机的 IP 地址和主机名并打印,需处理可能的异常。
答案:import java.net.InetAddress; import java.net.UnknownHostException;public class LocalHostDemo {public static void main(String[] args) {try {InetAddress localHost = InetAddress.getLocalHost();System.out.println("本机 IP 地址:" + localHost.getHostAddress());System.out.println("本机主机名:" + localHost.getHostName());} catch (UnknownHostException e) {System.out.println("获取本机信息失败:" + e.getMessage());}} }