java.lang.Object
java.net.SocketAddress
java.net.InetSocketAddress
- 所有已实现的接口:
-
Serializable
此类实现了一个IP套接字地址(IP地址+端口号)。它也可以是一对(主机名+端口号),在这种情况下,将尝试解析主机名。如果解析失败,则称地址为未解析,但在某些情况下仍可用,比如通过代理连接。
它提供了一个不可变对象,用于套接字的绑定、连接或作为返回值。
通配符是一个特殊的本地IP地址。通常表示“任何”,只能用于bind
操作。
- 自从:
- 1.4
- 参见:
-
Constructor Summary
ConstructorDescriptionInetSocketAddress
(int port) 创建一个套接字地址,其中IP地址是通配符地址,端口号是指定的值。InetSocketAddress
(String hostname, int port) 从主机名和端口号创建套接字地址。InetSocketAddress
(InetAddress addr, int port) 从IP地址和端口号创建套接字地址。 -
Method Summary
Modifier and TypeMethodDescriptionstatic InetSocketAddress
createUnresolved
(String host, int port) 从主机名和端口号创建一个未解析的套接字地址。final boolean
将此对象与指定对象进行比较。final InetAddress
获取InetAddress
。final String
获取hostname
。final String
返回主机名,或者如果没有主机名(使用文字创建的),则返回地址的字符串形式。final int
getPort()
获取端口号。final int
hashCode()
返回此套接字地址的哈希码。final boolean
检查地址是否已解析。toString()
构造此InetSocketAddress的字符串表示形式。
-
Constructor Details
-
InetSocketAddress
public InetSocketAddress(int port) 创建一个套接字地址,其中IP地址是通配符地址,端口号是指定的值。有效的端口值介于0和65535之间。端口号为
零
将允许系统在bind
操作中选择一个临时端口。- 参数:
-
port
- 端口号 - 抛出:
-
IllegalArgumentException
- 如果端口参数超出有效端口值范围。
-
InetSocketAddress
从IP地址和端口号创建套接字地址。有效的端口值介于0和65535之间。端口号为
零
将允许系统在bind
操作中选择一个临时端口。null
地址将分配通配符地址。- 参数:
-
addr
- IP地址 -
port
- 端口号 - 抛出:
-
IllegalArgumentException
- 如果端口参数超出有效端口值范围。
-
InetSocketAddress
从主机名和端口号创建套接字地址。将尝试将主机名解析为InetAddress。如果尝试失败,地址将被标记为未解析。
如果存在安全管理器,则将调用其
checkConnect
方法,参数为主机名,以检查解析主机名的权限。这可能导致SecurityException。有效的端口值介于0和65535之间。端口号为
零
将允许系统在bind
操作中选择一个临时端口。- 参数:
-
hostname
- 主机名 -
port
- 端口号 - 抛出:
-
IllegalArgumentException
- 如果端口参数超出有效端口值范围,或者主机名参数为null
。 -
SecurityException
- 如果存在安全管理器并且拒绝解析主机名的权限。
-
-
Method Details
-
createUnresolved
从主机名和端口号创建一个未解析的套接字地址。不会尝试将主机名解析为InetAddress。地址将被标记为未解析。
有效的端口值介于0和65535之间。端口号为
零
将允许系统在bind
操作中选择一个临时端口。- 参数:
-
host
- 主机名 -
port
- 端口号 - 返回:
-
表示未解析套接字地址的
InetSocketAddress
- 抛出:
-
IllegalArgumentException
- 如果端口参数超出有效端口值范围,或者主机名参数为null
。 - 自从:
- 1.5
-
getPort
public final int getPort()获取端口号。- 返回:
- 端口号。
-
getAddress
获取InetAddress
。- 返回:
-
InetAddress或
null
(如果未解析)。
-
getHostName
获取hostname
。注意:如果地址是使用文字IP地址创建的,则此方法可能触发名称服务反向查找。- 返回:
- 地址的主机名部分。
-
getHostString
返回主机名,或者如果没有主机名(使用文字创建的),则返回地址的字符串形式。这样做的好处是不会尝试进行反向查找。- 返回:
- 主机名,或地址的字符串表示形式。
- 自从:
- 1.7
-
isUnresolved
public final boolean isUnresolved()检查地址是否已解析。- 返回:
-
如果主机名无法解析为
InetAddress
,则返回true
。
-
toString
构造此InetSocketAddress的字符串表示形式。此字符串是通过在InetAddress上调用InetAddress.toString()
并连接端口号(带有冒号)来构造的。如果地址是IPv6地址,则IPv6文字将用方括号括起来,例如:
"localhost/[0:0:0:0:0:0:0:1]:80"
。如果地址是未解析的,则在地址文字的位置显示<未解析>
,例如"foo/<未解析>:80"
。要检索主机名或地址的字符串表示形式,请使用
getHostString()
,而不是解析此toString()
方法返回的字符串。 -
equals
将此对象与指定对象进行比较。如果且仅当参数不为null
且表示与此对象相同的地址时,结果为true
。如果两个
InetSocketAddress
实例表示相同的地址,则InetAddresses(或如果未解析,则为主机名)和端口号都相等。如果两个地址都未解析,则比较主机名和端口号。注意:主机名不区分大小写。例如“FooBar”和“foobar”被视为相等。 -
hashCode
public final int hashCode()返回此套接字地址的哈希码。
-