InetAddress
和 SocketAddress
是 Java 网络编程中常用的类,用于处理网络连接中的地址信息。
1. InetAddress
InetAddress
用于表示IP地址,既可以是IPV4也可以是IPV6。它可以用来获取主机的IP地址,或根据IP地址查找主机名。InetAddress
是抽象类,常用的有两个子类:Inet4Address
和 Inet6Address
。
常用方法:
getLocalHost()
:获取本地主机的InetAddress
对象。getByName(String host)
:根据主机名或IP地址获取InetAddress
对象。getHostName()
:获取主机名。getHostAddress()
:获取IP地址。
示例:
InetAddress address = InetAddress.getByName("www.google.com");
System.out.println("Host Name: " + address.getHostName());
System.out.println("IP Address: " + address.getHostAddress());
2. SocketAddress
SocketAddress
是一个抽象类,用来表示Socket连接中的地址信息。具体的地址类型由它的子类来定义,最常用的子类是 InetSocketAddress
,它结合了InetAddress
和端口号,用来标识特定的网络地址和端口。
常用方法:
InetSocketAddress(String hostname, int port)
:通过主机名和端口号创建一个SocketAddress
对象。InetSocketAddress(InetAddress addr, int port)
:通过InetAddress
和端口号创建一个SocketAddress
对象。getAddress()
:获取InetAddress
对象。getPort()
:获取端口号。
示例:
InetSocketAddress socketAddress = new InetSocketAddress("www.google.com", 80);
System.out.println("IP Address: " + socketAddress.getAddress());
System.out.println("Port: " + socketAddress.getPort());
总结:
InetAddress
只处理IP地址信息。SocketAddress
处理的是更广泛的Socket连接信息,通常包括IP地址和端口。