InetAddress
类是Java标准库中的一个重要类,用于表示互联网协议(IP)地址。它可以表示IPv4和IPv6地址,提供了用于查找主机名和IP地址的静态方法,以及获取本地主机和远程主机的网络地址信息的功能。本文将深入探讨InetAddress
类的各个方面,包括其构造方法、常用方法以及在实际应用中的使用示例。
1. InetAddress
类概述
InetAddress
类是java.net
包的一部分,用于封装IP地址和主机名的映射。它是一个抽象类,具体实现由其子类Inet4Address
和Inet6Address
提供。
1.1 主要构造方法
InetAddress
类没有公共构造方法,通常通过其静态工厂方法来创建实例:
static InetAddress getByName(String host)
:根据主机名或IP地址获取InetAddress
实例。static InetAddress[] getAllByName(String host)
:获取与主机名对应的所有InetAddress
实例。static InetAddress getLocalHost()
:获取本地主机的InetAddress
实例。
1.2 常用方法
InetAddress
类提供了一些常用的方法,用于获取和操作IP地址和主机名:
String getHostName()
:获取此IP地址对应的主机名。String getCanonicalHostName()
:获取此IP地址的完全限定域名(FQDN)。String getHostAddress()
:获取IP地址的字符串表示形式。boolean isReachable(int timeout)
:测试此IP地址是否在指定的超时时间内可达。
2. 使用示例
下面通过一些具体的示例代码,展示InetAddress
类的常见用法。
2.1 获取主机名和IP地址
import java.net.InetAddress;
import java.net.UnknownHostException;
public class InetAddressExample {
public static void main(String[] args) {
try {
InetAddress address = InetAddress.getByName("www.example.com");
System.out.println("Host Name: " + address.getHostName());
System.out.println("IP Address: " + address.getHostAddress());
} catch (UnknownHostException e) {
e.printStackTrace();
}
}
}
2.2 获取本地主机信息
import java.net.InetAddress;
import java.net.UnknownHostException;
public class LocalHostExample {
public static void main(String[] args) {
try {
InetAddress localHost = InetAddress.getLocalHost();
System.out.println("Local Host Name: " + localHost.getHostName());
System.out.println("Local IP Address: " + localHost.getHostAddress());
} catch (UnknownHostException e) {
e.printStackTrace();
}
}
}
2.3 测试主机可达性
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.io.IOException;
public class ReachabilityExample {
public static void main(String[] args) {
try {
InetAddress address = InetAddress.getByName("www.google.com");
if (address.isReachable(5000)) {
System.out.println("Host is reachable.");
} else {
System.out.println("Host is not reachable.");
}
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
3. 总结
InetAddress
类是Java网络编程中一个非常有用的类,通过它我们可以方便地获取IP地址和主机名,并测试网络连接的可达性。了解和掌握InetAddress
类的使用,对于编写高效和可靠的网络应用程序至关重要。