Module  java.base
软件包  java.net

Class SocketImpl

  • All Implemented Interfaces:
    SocketOptions


    public abstract class SocketImpl
    extends Object
    implements SocketOptions
    抽象类SocketImpl是实际实现套接字的所有类的公共超类。 它用于创建客户端和服务器套接字。

    “plain”套接字完全按照所描述的方式实现这些方法,而不尝试通过防火墙或代理。

    从以下版本开始:
    1.0
    • 字段详细信息

      • fd

        protected FileDescriptor fd
        该套接字的文件描述符对象。
      • address

        protected InetAddress address
        该套接字远端的IP地址。
      • port

        protected int port
        此套接字连接到的远程主机上的端口号。
      • localport

        protected int localport
        此套接字连接到的本地端口号。
    • 构造方法详细信息

      • SocketImpl

        public SocketImpl​()
    • 方法详细信息

      • create

        protected abstract void create​(boolean stream)
                                throws IOException
        创建流或数据报套接字。
        参数
        stream - 如果是true ,创建一个流套接字; 否则,创建一个数据报套接字。
        异常
        IOException - 如果在创建套接字时发生I / O错误。
      • connect

        protected abstract void connect​(String host,
                                        int port)
                                 throws IOException
        将此套接字连接到指定主机上的指定端口。
        参数
        host - 远程主机的名称。
        port - 端口号。
        异常
        IOException - 如果连接到远程主机时发生I / O错误。
      • connect

        protected abstract void connect​(InetAddress address,
                                        int port)
                                 throws IOException
        将此套接字连接到指定主机上的指定端口号。
        参数
        address - 远程主机的IP地址。
        port - 端口号。
        异常
        IOException - 如果尝试连接时发生I / O错误。
      • connect

        protected abstract void connect​(SocketAddress address,
                                        int timeout)
                                 throws IOException
        将此套接字连接到指定主机上的指定端口号。 超时为零被解释为无限超时。 然后,连接将阻塞,直到建立或发生错误。
        参数
        address - 远程主机的Socket地址。
        timeout - 无超时的超时值(以毫秒为单位)或零。
        异常
        IOException - 如果尝试连接时发生I / O错误。
        从以下版本开始:
        1.4
      • bind

        protected abstract void bind​(InetAddress host,
                                     int port)
                              throws IOException
        将此套接字绑定到指定的本地IP地址和端口号。
        参数
        host - 属于本地接口的IP地址。
        port - 端口号。
        异常
        IOException - 如果绑定此套接字时发生I / O错误。
      • listen

        protected abstract void listen​(int backlog)
                                throws IOException
        将传入连接指示(请求连接)的最大队列长度设置为count参数。 如果连接指示在队列已满时到达,则连接被拒绝。
        参数
        backlog - 队列的最大长度。
        异常
        IOException - 如果在创建队列时发生I / O错误。
      • accept

        protected abstract void accept​(SocketImpl s)
                                throws IOException
        接受连接。
        参数
        s - 接受的连接。
        异常
        IOException - 如果接受连接时发生I / O错误。
      • getInputStream

        protected abstract InputStream getInputStream​()
                                               throws IOException
        返回此套接字的输入流。
        结果
        从该套接字读取的流。
        异常
        IOException - 创建输入流时是否发生I / O错误。
      • getOutputStream

        protected abstract OutputStream getOutputStream​()
                                                 throws IOException
        返回此套接字的输出流。
        结果
        用于写入此插座的输出流。
        异常
        IOException - 创建输出流时是否发生I / O错误。
      • available

        protected abstract int available​()
                                  throws IOException
        返回可从该套接字读取而不阻塞的字节数。
        结果
        可以从该套接字读取但不阻塞的字节数。
        异常
        IOException - 确定可用字节数时是否发生I / O错误。
      • close

        protected abstract void close​()
                               throws IOException
        关闭此套接字。
        异常
        IOException - 如果在关闭此套接字时发生I / O错误。
      • shutdownInput

        protected void shutdownInput​()
                              throws IOException
        将此套接字的输入流放置在“流的末尾”。 发送到此套接字的任何数据都被确认,然后静默丢弃。 如果您在套接字上调用此方法后从套接字输入流中读取,则该流的available方法将返回0,而其read方法将返回-1 (流结束)。
        异常
        IOException - 如果在关闭此套接字时发生I / O错误。
        从以下版本开始:
        1.3
        另请参见:
        Socket.shutdownOutput()Socket.close()Socket.setSoLinger(boolean, int)
      • shutdownOutput

        protected void shutdownOutput​()
                               throws IOException
        禁用此套接字的输出流。 对于TCP套接字,任何先前写入的数据将被发送,随后是TCP的正常连接终止序列。 如果在套接字上调用shutdownOutput()之后写入套接字输出流,则流将抛出IOException。
        异常
        IOException - 如果在关闭此套接字时发生I / O错误。
        从以下版本开始:
        1.3
        另请参见:
        Socket.shutdownInput()Socket.close()Socket.setSoLinger(boolean, int)
      • getFileDescriptor

        protected FileDescriptor getFileDescriptor​()
        返回此套接字 fd字段的值。
        结果
        该套接字的 fd字段。
        另请参见:
        fd
      • getInetAddress

        protected InetAddress getInetAddress​()
        返回此套接字 address字段的值。
        结果
        该套接字的 address字段。
        另请参见:
        address
      • getPort

        protected int getPort​()
        返回此套接字 port字段的值。
        结果
        该套接字的 port字段。
        另请参见:
        port
      • supportsUrgentData

        protected boolean supportsUrgentData​()
        返回SocketImpl是否支持发送紧急数据。 默认情况下,返回false,除非方法在子类中被覆盖
        结果
        如果紧急数据支持,则为true
        从以下版本开始:
        1.4
        另请参见:
        address
      • sendUrgentData

        protected abstract void sendUrgentData​(int data)
                                        throws IOException
        在套接字上发送一个字节的紧急数据。 要发送的字节是该参数的低8位
        参数
        data - 发送数据的字节
        异常
        IOException - 发送数据是否有错误。
        从以下版本开始:
        1.4
      • getLocalPort

        protected int getLocalPort​()
        返回此套接字 localport字段的值。
        结果
        该套接字的 localport字段。
        另请参见:
        localport
      • toString

        public String toString​()
        将此套接字的地址和端口作为 String
        重写:
        toStringObject
        结果
        这个套接字的字符串表示形式。
      • setPerformancePreferences

        protected void setPerformancePreferences​(int connectionTime,
                                                 int latency,
                                                 int bandwidth)
        设置此套接字的性能首选项。

        套接字默认使用TCP / IP协议。 一些实现可以提供具有与TCP / IP不同的性能特征的替代协议。 该方法允许应用程序表达自己的偏好,以便在实现从可用协议中选择时应如何进行这些权衡。

        性能偏好由三个整数描述,其值表示短连接时间,低延迟和高带宽的相对重要性。 整数的绝对值是无关紧要的; 为了选择协议,简单地比较值,较大的值表示较强的偏好。 负值表示比正值低的优先级。 例如,如果应用程序优先考虑低延迟和高带宽的短连接时间,则可以使用值(1, 0, 0)调用此方法。 如果应用程序喜欢高于低延迟的高带宽,并且在短的连接时间以上的低延迟,则可以使用值为(0, 1, 2)调用此方法。 默认情况下,此方法不执行任何操作,除非在aa子类中被覆盖。

        参数
        connectionTime - 表示短连接时间的相对重要性的 int
        latency - 表示低延迟的相对重要性的 int
        bandwidth - 表示高带宽的相对重要性的 int
        从以下版本开始:
        1.5
      • setOption

        protected <T> void setOption​(SocketOption<T> name,
                                     T value)
                              throws IOException
        调用设置套接字选项。
        参数类型
        T - 套接字选项值的类型
        参数
        name - 套接字选项
        value - 套接字选项的值。 null可能对某些选项有效。
        异常
        UnsupportedOperationException - 如果SocketImpl不支持该选项
        IOException - 如果发生I / O错误,或者套接字关闭。
        从以下版本开始:
        9
      • getOption

        protected <T> T getOption​(SocketOption<T> name)
                           throws IOException
        被称为获取套接字选项。
        参数类型
        T - 套接字选项值的类型
        参数
        name - 套接字选项
        结果
        命名选项的值
        异常
        UnsupportedOperationException - 如果SocketImpl不支持该选项。
        IOException - 如果发生I / O错误,或者套接字关闭。
        从以下版本开始:
        9
      • supportedOptions

        protected Set<SocketOption<?>> supportedOptions​()
        返回一个由此impl和该impl的套接字支持的SocketOptions(Socket或ServerSocket)
        结果
        一套SocketOptions
        从以下版本开始:
        9