InetSocketAddress
java.lang.Object
|—java.net.SocketAddress
|—|—java.net.InetSocketAddress
public class InetSocketAddress
extends SocketAddress
此类实现了一个 IP 套接字地址(IP 地址 + 端口号),它也可以是一对(主机名 + 端口号),在这种情况下,将尝试解析主机名。 如果解析失败,则称该地址未解析,但仍可在某些情况下使用,例如通过代理连接。
它提供了一个不可变的对象,供套接字用于绑定、连接或作为返回值。
通配符是一个特殊的本地 IP 地址。 它通常表示“任何”,只能用于绑定操作。
构造函数摘要
构造函数 | 描述 |
---|---|
InetSocketAddress(int port) | 创建一个套接字地址,其中 IP 地址是通配符地址,端口号是指定值。 |
InetSocketAddress(String hostname, int port) | 从主机名和端口号创建套接字地址。 |
InetSocketAddress(InetAddress addr, int port) | 从 IP 地址和端口号创建套接字地址。 |
方法总结
修饰符和类型 | 方法 | 描述 |
---|---|---|
static InetSocketAddress | createUnresolved(String host, int port) | 从主机名和端口号创建一个未解析的套接字地址。 |
boolean | equals(Object obj) | 将此对象与指定对象进行比较。 |
InetAddress | getAddress() | 获取 InetAddress。 |
String | getHostName() | 获取主机名。 |
String | getHostString() | 如果没有主机名(它是使用文字创建的),则返回主机名或地址的字符串形式。 |
int | getPort() | 获取端口号。 |
int | hashCode() | 返回此套接字地址的哈希码。 |
boolean | isUnresolved() | 检查地址是否已解析。 |
String | toString() | 构造此 InetSocketAddress 的字符串表示形式。 |
从类 java.lang.Object 继承的方法 |
---|
clone, finalize, getClass, notify, notifyAll, wait, wait, wait |
构造函数详细信息
InetSocketAddress
public InetSocketAddress(int port)
创建一个套接字地址,其中 IP 地址是通配符地址,端口号是指定值。
有效端口值介于 0 和 65535 之间。端口号为零将使系统在绑定操作中选择一个临时端口。
参数:
参数名称 | 参数描述 |
---|---|
port | 端口号 |
Throws:
Throw名称 | Throw描述 |
---|---|
IllegalArgumentException | 如果端口参数超出指定的有效端口值范围。 |
InetSocketAddress
public InetSocketAddress(InetAddress addr, int port)
从 IP 地址和端口号创建套接字地址。
有效端口值介于 0 和 65535 之间。端口号为零将使系统在绑定操作中选择一个临时端口。
空地址将分配通配符地址。
参数:
参数名称 | 参数描述 |
---|---|
addr | IP 地址 |
port | 端口号 |
Throws:
Throw名称 | Throw描述 |
---|---|
IllegalArgumentException | 如果端口参数超出指定的有效端口值范围。 |
InetSocketAddress
public InetSocketAddress(String hostname, int port)
从主机名和端口号创建套接字地址。
将尝试将主机名解析为 InetAddress。 如果该尝试失败,该地址将被标记为未解析。
如果有安全管理器,则调用其 checkConnect 方法,并以主机名作为其参数,以检查解决它的权限。 这可能会导致 SecurityException。
有效端口值介于 0 和 65535 之间。端口号为零将使系统在绑定操作中选择一个临时端口。
参数:
参数名称 | 参数描述 |
---|---|
hostname | 主机名 |
port | 端口号 |
Throws:
Throw名称 | Throw描述 |
---|---|
IllegalArgumentException | 如果端口参数超出有效端口值的范围,或者主机名参数为空。 |
SecurityException | 如果存在安全管理器并且拒绝解析主机名的权限。 |
方法详情
createUnresolved
public static InetSocketAddress createUnresolved(String host, int port)
从主机名和端口号创建一个未解析的套接字地址。
不会尝试将主机名解析为 InetAddress。 该地址将被标记为未解析。
有效端口值介于 0 和 65535 之间。端口号为零将使系统在绑定操作中选择一个临时端口。
参数:
参数名称 | 参数描述 |
---|---|
host | 主机名 |
port | 端口号 |
返回:
表示未解析的套接字地址的 InetSocketAddress
Throws:
Throw名称 | Throw描述 |
---|---|
IllegalArgumentException | 如果端口参数超出有效端口值的范围,或者主机名参数为空。 |
getPort
public final int getPort()
获取端口号。
返回:
端口号。
getAddress
public final InetAddress getAddress()
获取 InetAddress。
返回:
InetAdress 或 null 如果它未解析。
getHostName
public final String getHostName()
获取主机名。 注意:如果地址是使用文字 IP 地址创建的,则此方法可能会触发名称服务反向查找。
返回:
地址的主机名部分。
getHostString
public final String getHostString()
如果没有主机名(它是使用文字创建的),则返回主机名或地址的字符串形式。 这样做的好处是不尝试反向查找。
返回:
地址的主机名或字符串表示形式。
isUnresolved
public final boolean isUnresolved()
检查地址是否已解析。
返回:
如果无法将主机名解析为 InetAddress,则为 true。
toString
public String toString()
构造此 InetSocketAddress 的字符串表示形式。 此字符串是通过在 InetAddress 上调用 toString() 并连接端口号(使用冒号)来构造的。 如果地址未解析,则冒号之前的部分将仅包含主机名。
覆盖:
类 Object 中的 toString
返回:
此对象的字符串表示形式。
equals
public final boolean equals(Object obj)
将此对象与指定对象进行比较。 当且仅当参数不为空并且它表示与此对象相同的地址时,结果才为真。
如果 InetAddresses(或主机名,如果它未解析)和端口号相等,则 InetSocketAddress 的两个实例表示相同的地址。 如果两个地址都未解析,则比较主机名和端口号。 注意:主机名不区分大小写。 例如 “FooBar” 和 “foobar” 被认为是相等的。
覆盖:
类 Object 中的等于
参数:
参数名称 | 参数描述 |
---|---|
obj | 要比较的对象。 |
返回:
如果对象相同,则为 true; 否则为false。
hashCode
public final int hashCode()
返回此套接字地址的哈希码。
覆盖:
类 Object 中的 hashCode
返回:
此套接字地址的哈希码值。