模块  java.base
软件包  java.net

Class SocketImpl

  • 实现的所有接口
    SocketOptions

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

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

    从以下版本开始:
    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 - 远程主机的套接字地址。
        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)调用此方法。 默认情况下,此方法不执行任何操作,除非它在子类中被重写。

        参数
        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支持的一组SocketOptions以及此impl的套接字(Socket或ServerSocket)
        结果
        一组SocketOptions
        从以下版本开始:
        9