Module java.base
Package java.net

Class SocketImpl

java.lang.Object
java.net.SocketImpl
所有已实现的接口:
SocketOptions

public abstract class SocketImpl extends Object implements SocketOptions
抽象类SocketImpl是所有实际实现套接字的类的通用超类。它用于创建客户端套接字和服务器套接字。
自:
1.0
  • Field Details

    • fd

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

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

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

      protected int localport
      此套接字连接的本地端口号。
  • Constructor Details

    • SocketImpl

      public SocketImpl()
      初始化此类的新实例
  • Method Details

    • 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
      参见:
    • shutdownOutput

      protected void shutdownOutput() throws IOException
      禁用此套接字的输出流。对于TCP套接字,将发送任何先前写入的数据,然后是TCP的正常连接终止序列。如果在套接字上调用shutdownOutput()后向套接字输出流写入数据,该流将抛出IOException。
      抛出:
      IOException - 如果关闭此套接字时发生I/O错误。
      自:
      1.3
      参见:
    • getFileDescriptor

      protected FileDescriptor getFileDescriptor()
      返回此套接字的fd字段的值。
      返回:
      此套接字的fd字段的值。
      参见:
    • getInetAddress

      protected InetAddress getInetAddress()
      返回此套接字的address字段的值。
      返回:
      此套接字的address字段的值。
      参见:
    • getPort

      protected int getPort()
      返回此套接字的port字段的值。
      返回:
      此套接字的port字段的值。
      参见:
    • supportsUrgentData

      protected boolean supportsUrgentData()
      返回此SocketImpl是否支持发送紧急数据。默认情况下,除非在子类中重写该方法,否则返回false。
      返回:
      如果支持紧急数据,则为true
      自:
      1.4
      参见:
    • sendUrgentData

      protected abstract void sendUrgentData(int data) throws IOException
      在套接字上发送一个字节的紧急数据。要发送的字节是参数的低八位。
      参数:
      data - 要发送的数据字节
      抛出:
      IOException - 如果发送数据时出现错误。
      自版本:
      1.4
    • getLocalPort

      protected int getLocalPort()
      返回此套接字的localport字段的值。
      返回:
      此套接字的localport字段的值。
      参见:
    • toString

      public String toString()
      返回此套接字的地址和端口作为String
      覆盖:
      toString 在类 Object
      返回:
      此套接字的字符串表示形式。
    • 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
      用于设置套接字选项。
      实现要求:
      此方法的默认实现首先检查给定的套接字选项name不为null,然后抛出 UnsupportedOperationException。子类应该用适当的实现覆盖此方法。
      类型参数:
      T - 套接字选项值的类型
      参数:
      name - 套接字选项
      value - 套接字选项的值。对于某些选项,值为null可能有效。
      抛出:
      UnsupportedOperationException - 如果SocketImpl不支持该选项
      IllegalArgumentException - 如果值对于该选项无效
      IOException - 如果发生I/O错误,或者套接字已关闭
      NullPointerException - 如果name为null
      自版本:
      9
    • getOption

      protected <T> T getOption(SocketOption<T> name) throws IOException
      用于获取套接字选项。
      实现要求:
      此方法的默认实现首先检查给定的套接字选项name不为null,然后抛出 UnsupportedOperationException。子类应该用适当的实现覆盖此方法。
      类型参数:
      T - 套接字选项值的类型
      参数:
      name - 套接字选项
      返回:
      命名选项的值
      抛出:
      UnsupportedOperationException - 如果SocketImpl不支持该选项
      IOException - 如果发生I/O错误,或者套接字已关闭
      NullPointerException - 如果name为null
      自版本:
      9
    • supportedOptions

      protected Set<SocketOption<?>> supportedOptions()
      返回此实现和此实现的套接字(Socket或ServerSocket)支持的一组SocketOptions
      实现要求:
      此方法的默认实现返回一个空集。子类应该用适当的实现覆盖此方法。
      返回:
      一组SocketOptions
      自版本:
      9