Module  java.base
软件包  java.net

Class InetSocketAddress

  • All Implemented Interfaces:
    Serializable


    public class InetSocketAddress
    extends SocketAddress
    该类实现IP套接字地址(IP地址+端口号)它也可以是一对(主机名+端口号),在这种情况下将尝试解析主机名。 如果解决方案失败,那么该地址被认为是未解决的,但在某些情况下仍可以使用,例如通过代理连接。

    它提供了用于绑定,连接或返回值的套接字所使用的不可变对象。

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

    从以下版本开始:
    1.4
    另请参见:
    SocketServerSocketSerialized Form
    • 构造方法详细信息

      • InetSocketAddress

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

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

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

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

        有效的端口值介于0到65535之间。端口号为zero将允许系统在bind操作中拾取临时端口。

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

        参数
        addr - IP地址
        port - 端口号
        异常
        IllegalArgumentException - 如果端口参数在有效端口值的指定范围之外。
      • InetSocketAddress

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

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

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

        有效端口值介于0和65535之间。端口号为zero将允许系统在bind操作中拾取临时端口。

        参数
        hostname - 主机名
        port - 端口号
        异常
        IllegalArgumentException - 如果端口参数超出有效端口值的范围,或者主机名参数是 null
        SecurityException - 如果存在安全管理员,并且拒绝解析主机名的权限。
        另请参见:
        isUnresolved()
    • 方法详细信息

      • createUnresolved

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

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

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

        参数
        host - 主机名
        port - 端口号
        结果
        一个表示未解决的套接字地址的 InetSocketAddress
        异常
        IllegalArgumentException - 如果端口参数超出有效端口值的范围,或者主机名参数是否为 null
        从以下版本开始:
        1.5
        另请参见:
        isUnresolved()
      • getPort

        public final int getPort​()
        获取端口号。
        结果
        端口号。
      • getAddress

        public final InetAddress getAddress​()
        获得 InetAddress
        结果
        InetAdress或 null如果尚未解决。
      • getHostName

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

        public final String getHostString​()
        如果没有主机名(使用文字创建),则返回主机名或地址的String形式。 这样做不利于尝试反向查找。
        结果
        主机名或字符串表示的地址。
        从以下版本开始:
        1.7
      • isUnresolved

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

        public String toString​()
        构造此InetSocketAddress的字符串表示形式。 此字符串是通过在InetAddress上调用toString()并连接端口号(带冒号)来构造的。 如果地址未解决,则冒号之前的部分将只包含主机名。
        重写:
        toStringObject
        结果
        该对象的字符串表示形式。
      • equals

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

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

        重写:
        equalsObject
        参数
        obj - 要比较的对象。
        结果
        true如果对象是相同的; 否则为false
        另请参见:
        InetAddress.equals(java.lang.Object)