【版权声明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权)
https://blog.csdn.net/m0_69908381/article/details/131870760
出自【进步*于辰的博客】
注:基础类:InetAddress类。
1、概述
继承关系:
- java.lang.Object
- java.net.SocketAddress
- java.net.InetSocketAddress
- java.net.SocketAddress
所有已实现的接口:
Serializable
public class InetSocketAddress extends SocketAddress
此类实现 IP 套接字地址(IP 地址 + 端口号)。它还可以是一个对(主机名 + 端口号),在此情况下,将尝试解析主机名。如果解析失败,则该地址将被视为未解析 地址,但是其在某些情形下仍然可以使用,比如通过代理连接。
它提供不可变对象,供套接字用于绑定、连接或用作返回值。
通配符
通配符
通配符是一个特殊的本地 IP 地址。它通常表示“任何”,只能用于 bind
操作。
从以下版本开始:
1.4
另请参见:
Socket、ServerSocket、序列化表格
2、构造方法摘要
2.1 InetAddress addr, int port
根据 IP 地址和端口号创建套接字地址。
说明:
先看源码。
关于anyLocalAddress()
,见基础类的第5.5项;关于checkPort()
,见第5.1项;关于new
,见第4项。
示例:
InetAddress lp = InetAddress.getLocalHost();
InetSocketAddress sip1 = new InetSocketAddress(lp, 8080);
sout sip1;// 打印:DESKTOP-ABVxxQA/192.168.xx.210:8080
2.2 int port
创建套接字地址,其中 IP 地址为通配符地址,端口号为指定值。
说明:
先看源码。
关于anyLocalAddress()
,见基础类的第5.5项;关于this()
,见上1项。
2.3 String hostname, int port
根据主机名和端口号创建套接字地址。
说明:
先看源码。
关于checkHost()
,见第5.2项;关于getByName()
,见InetAddress类的第2.6项;关于new
,见第4.1项。
3、方法摘要
3.1 static InetSocketAddress createUnresolved(String host, int port)
根据主机名和端口号创建未解析的套接字地址。
3.2 boolean equals(Object obj)
将此对象与指定对象比较。
示例:
InetSocketAddress sip1 = new InetSocketAddress("localhost", 8080);
InetSocketAddress sip2 = InetSocketAddress.createUnresolved("localhost", 8080);
System.out.println(sip1);
System.out.println(sip2);
System.out.println(sip1.equals(sip2));
打印结果:
3.3 InetAddress getAddress()
获取 InetAddress
。
说明:
先看源码。
关于getAddress()
,见第4.1项。
3.4 String getHostName()
获取 hostname
。
说明:
先看源码。
关于getHostName()
,见第4.1项。
3.5 int getPort()
获取端口号。
说明:
先看源码。
关于getPort()
,见第4.1项。
3.6 int hashCode()
返回此套接字地址的哈希码。
3.7 final boolean isUnresolved()
检查是否已解析地址。
说明:
先看源码。
关于isUnresolved()
,见第4.1项。
3.8 String toString()
构造此 InetSocketAddress 的字符串表示形式。
4、关于嵌套类InetSocketAddressHolder
InetSocketAddress 类的基本信息类。
4.1 全览
先看源码。
可见,此类封装了 InetSocketAddress 类的基本信息,表示套接字 IP 的基本属性。
4.2 方法摘要
4.1.1 private String getHostName()
返回此 InetSocketAddressHolder 对象的主机名。
说明:
先看源码。
关于getHostName()
,见基础类的第2.9项。
4.1.2 private String getHostString()
返回此 InetSocketAddressHolder 对象的主机名的字符串形式。
说明:
先看源码。
关于holder()
,见基础类的第5.6项;关于getHostName()
,见基础类的第3项;关于getHostAddress()
,见基础类的第2.8项。
4.1.3 public final boolean equals(Object obj)
比较两个对象是否相同。
说明:
先看源码。
关于equals()
,见基础类的第2.1项。
底层逻辑: 底层逻辑: 底层逻辑:当 IP 地址、主机名、端口号三项都相同时,返回 true。
4.1.4 public final int hashCode()
返回此 InetSocketAddressHolder 对象的哈希码。
说明:
先看源码。
关于addr.hashCode()
,见基础类的第2.11项;关于toLowerCase()
,见String类的第2.49项;关于hashCode()
,见String类的第2.22项。
5、方法摘要(不开放)
5.1 private static int checkPort(int port)
检查端口是否合规。若超出范围,抛出IllegalArgumentException。
说明:
先看源码。
可见,端口范围是0 ~ 65535(0xffff)
、
5.2 private static String checkHost(String hostname)
检查主机名是否为空。
说明:
看源码。
6、构造方法摘要(不开放)
6.1 private InetSocketAddress(int port, String hostname)
根据端口号和主机名创建套接字地址。
说明:
先看源码。
关于new
,见第4项。
最后
如果大家需要Java-API文档,我上传了《Java-API文档-包含5/8/11三个版本》。
本文暂缓更新。