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 ) ,帮助识别主机的网络名称。

问题

  1. 问题:java.net.InetAddress 类在 Java 网络编程中的主要作用是什么?它封装了哪些核心信息?

    答案: InetAddress 类的主要作用是作为 Java 对网络中主机 IP 地址的高层表示,封装主机的网络标识信息,为 SocketServerSocket 等网络类提供地址支持。它封装的核心信息包括主机的 IP 地址和主机名 / 域名(不包含端口信息)。

  2. 问题:InetAddress 类的 getLocalHost() 方法有什么功能?调用后会返回什么?

    答案: getLocalHost()InetAddress 类的静态方法,功能是获取代表本机的 InetAddress 对象。调用后返回的对象中封装了本机的 IP 地址和主机名信息。

  3. 问题:如何通过 InetAddress 类获取百度域名(www.baidu.com)对应的 IP 地址?请简述步骤。

    答案:步骤如下:

    • 调用 InetAddress.getByName("www.baidu.com") 方法,传入百度域名,获取对应的 InetAddress 对象(该方法会自动进行 DNS 解析);
    • 调用该对象的 getHostAddress() 方法,即可得到百度的 IP 地址字符串。
  4. 问题:InetAddress 类的 getHostAddress()getHostName() 方法的返回结果有何不同?

    答案:getHostAddress() 返回的是对应主机的 IP 地址字符串(如 110.242.68.66);getHostName() 返回的是对应主机的主机名或域名(如本机可能返回电脑名,www.baidu.com 可能返回其域名)。

  5. 问题:编写 Java 代码,使用 InetAddress 类获取本机的 IP 地址和主机名并打印,需处理可能的异常。

    答案:

    java 复制代码
    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());
            }
        }
    }
相关推荐
还是鼠鼠15 小时前
《黑马商城》微服务保护-详细介绍【简单易懂注释版】
java·spring boot·spring·spring cloud·sentinel·maven
她说..15 小时前
通过git拉取前端项目
java·前端·git·vscode·拉取代码
青衫码上行15 小时前
【从0开始学习Java | 第18篇】集合(下 - Map部分)
java·学习
我星期八休息16 小时前
C++异常处理全面解析:从基础到应用
java·开发语言·c++·人工智能·python·架构
江湖有缘16 小时前
【Docker项目实战】使用Docker部署ShowDoc文档管理工具
java·docker·容器
2401_8414956416 小时前
【数据结构】汉诺塔问题
java·数据结构·c++·python·算法·递归·
程序猿阿越16 小时前
Kafka源码(六)消费者消费
java·后端·源码阅读
失散1316 小时前
分布式专题——35 Netty的使用和常用组件辨析
java·分布式·架构·netty
枫叶丹416 小时前
【Qt开发】输入类控件(五)-> QDateTimeEdit
开发语言·qt
Terio_my16 小时前
Spring Boot 热部署配置
java·spring boot·后端