InetSocketAddress类

随时随地阅读更多技术实战干货,获取项目源码、学习资料,请关注源代码社区公众号(ydmsq666)、博主微信(guyun297890152)、QQ技术交流群(183198395)。

一、简介:

该类实现了可序列化接口,直接继承自java.net.SocketAddress类,类声明如下: public class InetSocketAddress extends SocketAddress

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

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

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

 

二、构造方法:

①public InetSocketAddress(int port)创建套接字地址,其中 IP 地址为通配符地址,端口号为指定值。
有效端口值介于 0 和 65535 之间。端口号 zero 允许系统在 bind 操作中挑选暂时的端口。
 

参数: port - 端口号

抛出: IllegalArgumentException - 如果 port 参数超出有效端口值的指定范围。

②public InetSocketAddress(InetAddress addr,  int port)  根据 IP 地址和端口号创建套接字地址。

有效端口值介于 0 和 65535 之间。端口号 zero 允许系统在 bind 操作中挑选暂时的端口。 null 地址将分配通配符 地址。

参数: addr - IP 地址   port - 端口号

抛出: IllegalArgumentException - 如果 port 参数超出有效端口值的指定范围。

③public InetSocketAddress(String hostname,int port) 根据主机名和端口号创建套接字地址。

尝试将主机名解析为 InetAddress。如果尝试失败,则将地址标记为未解析。如果存在安全管理器,则将主机名用作参数调用其 checkConnect 方法,以检查解析它的权限。这可能会导致 SecurityException 异常。有效端口值介于 0 和 65535 之间。端口号 zero 允许系统在 bind 操作中挑选暂时的端口。

参数: hostname - 主机名   port - 端口号

抛出:IllegalArgumentException - 如果 port 参数超出有效端口值的范围,或者主机名参数为 null。

SecurityException - 如果存在安全管理器,但拒绝解析主机名的权限。

 

三、方法详解:

 

①public static InetSocketAddress createUnresolved(String host, int port)  根据主机名和端口号创建未解析的套接字地址。

不会尝试将主机名解析为 InetAddress。将地址标记为未解析。 有效端口值介于 0 和 65535 之间。端口号 zero 允许系统在 bind 操作中挑选暂时的端口。

参数: hostname - 主机名   port - 端口号

抛出:IllegalArgumentException - 如果 port 参数超出有效端口值的范围,或者主机名参数为 null。

②public final int getPort()  获取端口号。

③public final InetAddress getAddress()  获取 InetAddress。如果未解析,则返回 null

④public final String getHostName()  获取 hostname。即地址的主机名部分。

⑤public final boolean isUnresolved()  检查是否已解析地址。如果无法将主机名解析为 InetAddress,则返回 true

⑥public String toString()   构造此 InetSocketAddress 的字符串表示形式。此 String 通过在 InetAddress 上调用 toString() 并连接端口号(使用冒号)来构造。如果未解析地址,则冒号之前的部分将仅包含主机名。 覆盖了Object的toString

public final boolean equals(Object obj) 将此对象与指定对象比较。当且仅当参数不为 null,并且它表示与此对象相同的地址时,结果才为 true

如果 InetSocketAddress 的两个实例的 InetAddress(或主机名,如果未解析的话)和端口号都相等,则它们表示同一个地址。如果两个地址都未解析,则比较主机名和端口号。 覆盖了Object的equals

⑧public final int hashCode()  返回此套接字地址的哈希码。覆盖了Object的hashCode

 

 

 

 

 

 

你可能感兴趣的:(java,API,Java之旅)