InetAddress类常用方法

本文详细介绍了Java的InetAddress类及其子类Inet4Address和Inet6Address,涵盖了获取本地主机、根据域名和IP地址创建对象,以及常用方法如获取全限定域名、IP地址和主机名等。通过示例代码演示了如何在实际编程中运用这些功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java提供InetAddress类来封装IP地址或域或名。InetAddress类有两个子类:Inet4Address和Inet6Address,分别用于封装4个字节的IP地址和6个字节的IP地址。InetAddress内部对地址数字进行隐藏,用户不需要了解实现地址的细节,只需了解如何调用相应的方法即可。
InetAddress类无构造方法,因此不能直接创建其对象,而是通过该类的静态方法创建一个InetAddress对象或InetAddress数组。InetAddress类常用方法如下

InetAddress常用方法
方法功能描述
public static InetAddress getLocalHost()获取本机对应的InetAddress对象
public static InetAddress getByName(String host)根据主机获得对应的InetAddress对象,参数host可以是IP地址或域名
public static InetAddress[] getAllByName(String host)根据主机获得对应的InetAddress对象
public static InetAddress getByAddress(byte[] addr)获取addr所封装的IP地址对应的Inet Address对象
public  String getCanonicalHostName()获取此IP地址的全限定域名
public bytes[] getHostAddress()获取该InetAddress对象对应的IP地址字符串
public String getHostName()获得该InetAddress对象的主机名称
public boolean isReachable(int timeout)判断是否可以到达该地址

示例代码

import java.net.InetAddress;
import java.net.UnknownHostException;

public class InetAddressDemo {
    public static void main(String[] args) {
        try{
            //获取本机地址信息
            InetAddress localIp=InetAddress.getLocalHost();
            System.out.println("localIp.getCanonicalHostName()="
                    + localIp.getCanonicalHostName());
            System.out.println("localIp.getHostAddress()="
                    + localIp.getHostAddress());
            System.out.println("localIp.getHostName()="
                    + localIp.getHostName());
            System.out.println("localIp.toString()="+localIp.toString()); System.out.println("localIp.isReachable(5000)="
                    + localIp.isReachable(5000));
            System.out.println("====================================");//获取指定域名地址信息
            InetAddress baiduIp = InetAddress.getByName("www.baidu.com");
            System.out.println("baiduIp.getCanonicalHostName()="
                    + baiduIp.getCanonicalHostName());
            System.out.println("baiduIp.getHostAddress()="
                    + baiduIp.getHostAddress());
            System.out.println("baiduIp.getHostName()="
                    + baiduIp.getHostName());
            System.out.println("baiduIp.toString()="+baiduIp.toString());
            System.out.println("baiduIp.isReachable(5000)="
                    + baiduIp.isReachable(5000));
            System.out.println("====================================");
            //获取指定原始IP地址信息
            InetAddress ip = InetAddress.getByAddress(new byte[]{127,0,0,1});
            // InetAddress ip = InetAddress.getByName("127.0.0.1");
            System.out.println("ip.getCanonicalHostName()="
            + ip.getCanonicalHostName());
            System.out.println("ip.getHostAddress()= "+ ip.getHostAddress()); System.out.println("ip.getHostName()="+ ip.getHostName()); System.out.println("ip.toString()="+ ip.toString()); System.out.println("ip.isReachable(5000)="
                    + ip.isReachable(5000));
        }catch(UnknownHostException e){
            e.printStackTrace();}catch(Exception e){
            e.printStackTrace();
        }
    }
}

运行结果

 上述代码分别获取本机、指定域名以及指定 IP地址的InetAddress对象。其中,调用 getLocalHostO可以获取本机InetAddress对象;调用getByName()可以获取指定域名的 InetAddress对象;

调用getByAddress()可以获取指定IP地址的InetAddress对象,该方法的参数使用字节数组存放IP地址。也可以直接通过 getByName()获取指定IP地址的InetAddress对象,此时IP地址作为字符串即可,即下面两个语句是等价的

InetAddress ip = InetAddress.getByAddress(new byte[]{127,0,0,1});
// InetAddress ip = InetAddress.getByName("127.0.0.1");

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值