模块 java.base
 java.net

类 SocketImpl

java.lang.Object
java.net.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
      参见:
    • 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,除非该方法在子类中被重写
      返回:
      如果支持紧急数据则为真
      自从:
      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 不为空,然后抛出 UnsupportedOperationException 。子类应使用适当的实现覆盖此方法。
      类型参数:
      T - 套接字选项值的类型
      参数:
      name - 套接字选项
      value - 套接字选项的值。 null 的值可能对某些选项有效。
      抛出:
      UnsupportedOperationException - 如果 SocketImpl 不支持该选项
      IllegalArgumentException - 如果该值对选项无效
      IOException - 如果发生 I/O 错误,或者套接字已关闭
      NullPointerException - 如果名字是 null
      自从:
      9
    • getOption

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

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