Module java.base
Package java.net

Class InetSocketAddress

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

public class InetSocketAddress extends SocketAddress
此类实现了一个IP套接字地址(IP地址+端口号)。它也可以是一对(主机名+端口号),在这种情况下,将尝试解析主机名。如果解析失败,则称地址为未解析,但在某些情况下仍可用,比如通过代理连接。

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

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

自从:
1.4
参见:
  • Constructor Details

    • InetSocketAddress

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

      有效的端口值介于0和65535之间。端口号为将允许系统在bind操作中选择一个临时端口。

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

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

      有效的端口值介于0和65535之间。端口号为将允许系统在bind操作中选择一个临时端口。

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

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

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

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

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

      有效的端口值介于0和65535之间。端口号为将允许系统在bind操作中选择一个临时端口。

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

    • createUnresolved

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

      不会尝试将主机名解析为InetAddress。地址将被标记为未解析

      有效的端口值介于0和65535之间。端口号为将允许系统在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()
      返回主机名,或者如果没有主机名(使用文字创建的),则返回地址的字符串形式。这样做的好处是不会尝试进行反向查找。
      返回:
      主机名,或地址的字符串表示形式。
      自从:
      1.7
    • isUnresolved

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

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

      如果地址是IPv6地址,则IPv6文字将用方括号括起来,例如:"localhost/[0:0:0:0:0:0:0:1]:80"。如果地址是未解析的,则在地址文字的位置显示<未解析>,例如"foo/<未解析>:80"

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

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

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

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

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

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