Java-API简析_java.net.InetSocketAddress类(基于 Latest JDK)(浅析源码)

【版权声明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权)
https://blog.csdn.net/m0_69908381/article/details/131870760
出自【进步*于辰的博客

注:基础类:InetAddress类

1、概述

继承关系:

  • java.lang.Object
    • java.net.SocketAddress
      • java.net.InetSocketAddress

所有已实现的接口:
Serializable


public class InetSocketAddress extends SocketAddress

此类实现 IP 套接字地址(IP 地址 + 端口号)。它还可以是一个对(主机名 + 端口号),在此情况下,将尝试解析主机名。如果解析失败,则该地址将被视为未解析 地址,但是其在某些情形下仍然可以使用,比如通过代理连接

它提供不可变对象,供套接字用于绑定连接或用作返回值

通配符 通配符 通配符是一个特殊的本地 IP 地址。它通常表示“任何”,只能用于 bind 操作。

从以下版本开始:
1.4
另请参见:
SocketServerSocket序列化表格

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三个版本》。


本文暂缓更新。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

进步·于辰

谢谢打赏!!很高兴可以帮到你!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值