📜  InetAddress.getByAddress 示例 - Java (1)

📅  最后修改于: 2023-12-03 15:01:24.063000             🧑  作者: Mango

Java InetAddress.getByAddress 示例

InetAddress 类是 Java 中用于表示 IP 地址的类,提供了一些静态方法来获取表示本机地址、远程地址等 InetAddress 对象。其中,InetAddress.getByAddress() 方法可以通过指定 IP 地址的字节数组来获取 InetAddress 对象。本文将介绍 InetAddress.getByAddress 方法的用法示例。

方法签名
public static InetAddress getByAddress(byte[] addr) throws UnknownHostException

其中,addr 参数为 IP 地址的字节数组,UnknownHostException 为可能抛出的异常。

示例

下面的示例演示了如何使用 InetAddress.getByAddress 方法获取指定 IP 地址的 InetAddress 对象:

import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.Arrays;

public class InetAddressDemo {
    public static void main(String[] args) {
        try {
            // IP 地址的字节数组表示
            byte[] ipBytes = new byte[] { (byte)192, (byte)168, 0, 1 };
            // 获取 InetAddress 对象
            InetAddress address = InetAddress.getByAddress(ipBytes);
            // 输出 InetAddress 对象
            System.out.println("Host Address:" + address.getHostAddress()); // 192.168.0.1
            System.out.println("Canonical Host Name:" + address.getCanonicalHostName()); // 192.168.0.1
            System.out.println("Host Name:" + address.getHostName()); // 192.168.0.1
            System.out.println("Address Length:" + address.getAddress().length); // 4
            System.out.println("Address Bytes:" + Arrays.toString(address.getAddress())); // [192, 168, 0, 1]
        } catch (UnknownHostException e) {
            e.printStackTrace();
        }
    }
}

运行以上示例,可以看到输出结果如下:

Host Address:192.168.0.1
Canonical Host Name:192.168.0.1
Host Name:192.168.0.1
Address Length:4
Address Bytes:[-64, -88, 0, 1]

说明:

  • getHostAddress() 方法返回 InetAddress 对象的 IP 地址字符串表示。
  • getCanonicalHostName() 和 getHostName() 方法都返回 InetAddress 对象的主机名(如果有的话),区别是 getCanonicalHostName() 方法会尝试通过 DNS 查询来获取该主机的全限定域名。
  • getAddress() 方法返回 InetAddress 对象的字节数组表示。
  • 在上面的示例中,虽然我们指定了一个正常的 IP 地址字节数组,但getAddress() 方法返回的字节数组中的前两个字节出现了负数,这是因为 Java 中的 byte 类型是有符号的。
小结
  • InetAddress.getByAddress 方法可以通过指定 IP 地址的字节数组来获取 InetAddress 对象。
  • getHostAddress() 方法返回 InetAddress 对象的 IP 地址字符串表示。
  • getCanonicalHostName() 和 getHostName() 方法都返回 InetAddress 对象的主机名(如果有的话),区别是 getCanonicalHostName() 方法会尝试通过 DNS 查询来获取该主机的全限定域名。
  • getAddress() 方法返回 InetAddress 对象的字节数组表示。注意 Java 中的 byte 类型是有符号的,可能导致字节转换后出现负数。