InetAddress类是Java中用于表示 Internet 协议(IP)地址的类,它提供了一些用于创建和操作IP地址的方法,可以创建IPv4和IPv6对象,还可以完成DNS反向查询,获取本地主机名等操作。
一、获取IP地址
1、getByName方法:根据主机名或IP地址字符串返回相应的InetAddress对象。
InetAddress addr = InetAddress.getByName("www.baidu.com");
System.out.println("Address: " + addr.getHostAddress()); // 输出:"Address: 61.135.169.125"
2、getAllByName方法:返回指定主机名的所有InetAddress对象数组(一个主机名可能对应多个IP地址)。
InetAddress[] addrs = InetAddress.getAllByName("www.baidu.com");
for (InetAddress addr : addrs) {
System.out.println("Address: " + addr.getHostAddress());
}
// 输出:
// Address: 61.135.169.121
// Address: 61.135.169.125
3、getLocalHost方法:返回本地主机的InetAddress对象。
InetAddress addr = InetAddress.getLocalHost();
System.out.println("Address: " + addr.getHostAddress()); // 输出:本机IP地址
二、address属性
address属性是InetAddress类中表示IP地址的内部byte数组,使用它可以获取和设置IP地址的二进制值。
1、getAddress方法:获取IP地址对应的byte数组。
InetAddress addr = InetAddress.getByName("www.baidu.com");
byte[] ipBytes = addr.getAddress();
for (int i = 0; i < ipBytes.length; i++) {
System.out.print(ipBytes[i] & 0xFF); // 输出:61.135.169.125
if (i != ipBytes.length - 1) {
System.out.print(".");
}
}
2、根据byte数组创建InetAddress对象。
byte[] ipBytes = new byte[]{61, 135, 169, 125};
InetAddress addr = InetAddress.getByAddress(ipBytes);
System.out.println("Address: " + addr.getHostAddress()); // 输出:61.135.169.125
三、其他方法
1、getCanonicalHostName方法:获取IP地址对应的全限定域名。
InetAddress addr = InetAddress.getByName("8.8.8.8");
System.out.println("Canonical Host Name: " + addr.getCanonicalHostName()); // 输出:dns.google
2、isReachable方法:判断是否能够到达该地址。
InetAddress addr = InetAddress.getByName("www.baidu.com");
boolean isReachable = addr.isReachable(5000); // 超时时间为5秒
System.out.println("Reachable? " + isReachable); // 输出:true
3、hashCode和equals方法:比较两个InetAddress对象是否相等。
InetAddress addr1 = InetAddress.getByName("www.baidu.com");
InetAddress addr2 = InetAddress.getByName("www.baidu.com");
System.out.println("hashCode: " + addr1.hashCode() + ", " + addr2.hashCode()); // 输出相等的hashCode
System.out.println("equals: " + addr1.equals(addr2)); // 输出true
除了上面描述的这些方法,InetAddress类还提供了一些其他的方法,读者可以根据需要进行学习和使用。
原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/304860.html