模块 java.base
 java.net

类 InetSocketAddress

java.lang.Object
java.net.SocketAddress
java.net.InetSocketAddress
所有已实现的接口:
Serializable

public class InetSocketAddress extends SocketAddress
这个类实现了一个IP Socket Address(IP地址+端口号)也可以是一对(主机名+端口号),在这种情况下会尝试解析主机名。如果解析失败,则地址被称为悬而未决但仍然可以在某些情况下使用,例如通过代理连接。

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

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

自从:
1.4
参见:
  • 构造方法详细信息

    • InetSocketAddress

      public InetSocketAddress(int port)
      创建一个套接字地址,其中 IP 地址是通配符地址,端口号是指定值。

      有效端口值介于 0 和 65535 之间。端口号 zero 将使系统在 bind 操作中选择临时端口。

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

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

      有效端口值介于 0 和 65535 之间。端口号 zero 将使系统在 bind 操作中选择临时端口。

      null 地址将分配通配符地址。

      参数:
      addr - IP 地址
      port - 端口号
      抛出:
      IllegalArgumentException - 如果端口参数超出指定的有效端口值范围。
    • InetSocketAddress

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

      将尝试将主机名解析为 InetAddress。如果该尝试失败,该地址将被标记为悬而未决.

      如果有安全管理器,它的 checkConnect 方法将以主机名作为参数调用,以检查解析它的权限。这可能会导致 SecurityException。

      有效端口值介于 0 和 65535 之间。端口号 zero 将使系统在 bind 操作中选择临时端口。

      参数:
      hostname - 主机名
      port - 端口号
      抛出:
      IllegalArgumentException - 如果端口参数超出有效端口值的范围,或者主机名参数为 null
      SecurityException - 如果存在安全管理器并且解析主机名的权限被拒绝。
      参见:
  • 方法详情

    • createUnresolved

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

      不会尝试将主机名解析为 InetAddress。该地址将被标记为悬而未决.

      有效端口值介于 0 和 65535 之间。端口号 zero 将使系统在 bind 操作中选择临时端口。

      参数:
      host - 主机名
      port - 端口号
      返回:
      一个 InetSocketAddress 表示未解析的套接字地址
      抛出:
      IllegalArgumentException - 如果端口参数超出有效端口值的范围,或者主机名参数为 null
      自从:
      1.5
      参见:
    • getPort

      public final int getPort()
      获取端口号。
      返回:
      端口号。
    • getAddress

      public final InetAddress  getAddress()
      获取 InetAddress
      返回:
      InetAddress 或 null(如果未解析)。
    • getHostName

      public final String  getHostName()
      获取 hostname 。注意:如果地址是使用文字 IP 地址创建的,则此方法可能会触发名称服务反向查找。
      返回:
      地址的主机名部分。
    • getHostString

      public final String  getHostString()
      返回主机名,如果地址没有主机名(它是使用文字创建的),则返回地址的 String 形式。这有利于not尝试反向查找。
      返回:
      地址的主机名或字符串表示形式。
      自从:
      1.7
    • isUnresolved

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

      public String  toString()
      构造此 InetSocketAddress 的字符串表示形式。该字符串是通过在 InetAddress 上调用 InetAddress.toString() 并连接端口号(用冒号)构造的。

      如果地址是 IPv6 地址,则 IPv6 文字会括在方括号中,例如:"localhost/[0:0:0:0:0:0:0:1]:80"。如果地址是 悬而未决 ,则显示 <unresolved> 代替地址文字,例如 "foo/<unresolved>:80"

      要检索主机名或地址的字符串表示形式,请使用 getHostString() ,而不是解析此 toString() 方法返回的字符串。

      重写:
      toString 在类 Object
      返回:
      此对象的字符串表示形式。
    • equals

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

      如果 InetAddresses(或主机名,如果未解析)和端口号相等,则 InetSocketAddress 的两个实例表示相同的地址。如果两个地址都未解析,则比较主机名和端口号。注意:主机名不区分大小写。例如“FooBar”和“foobar”被认为是相等的。

      重写:
      equals 在类 Object
      参数:
      obj - 要比较的对象。
      返回:
      true 如果对象相同; false否则。
      参见:
    • hashCode

      public final int hashCode()
      返回此套接字地址的哈希码。
      重写:
      hashCode 在类 Object
      返回:
      此套接字地址的哈希码值。
      参见: