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类的使用,对于编写高效和可靠的网络应用程序至关重要。
59

被折叠的 条评论
为什么被折叠?



