模块 jdk.sctp

类 SctpServerChannel

所有已实现的接口:
Closeable , AutoCloseable , Channel , InterruptibleChannel

public abstract class SctpServerChannel extends AbstractSelectableChannel
面向消息的监听 SCTP 套接字的可选通道。

通过调用此类的 open 方法创建 SCTPServerChannel。新创建的 SCTP 服务通道已打开但尚未绑定。尝试调用未绑定通道的 accept 方法将导致抛出 NotYetBoundException 。可以通过调用此类定义的 bind 方法之一来绑定 SCTP 服务通道。

使用 setOption 方法配置套接字选项。 SCTP 服务套接字通道支持以下选项:

套接字选项
选项名称 Description
SCTP_INIT_MAXSTREAMS 关联初始化时本地端点请求的最大流数
还可以支持其他(特定于实现的)选项。支持的选项列表通过调用 supportedOptions 方法获得。

SCTP 服务通道可供多个并发线程使用是安全的。

自从:
1.7
  • 构造方法详细信息

    • SctpServerChannel

      protected SctpServerChannel(SelectorProvider  provider)
      初始化此类的新实例。
      参数:
      provider - 此通道的选择器提供程序
  • 方法详情

    • open

      public static SctpServerChannel  open() throws IOException
      打开 SCTP 服务通道。

      新通道的套接字最初是未绑定的;在接受关联之前,它必须通过其套接字的 bind 方法之一绑定到特定地址。

      返回:
      一个新的 SCTP 服务通道
      抛出:
      UnsupportedOperationException - 如果不支持 SCTP 协议
      IOException - 如果发生 I/O 错误
    • accept

      public abstract SctpChannel  accept() throws IOException
      接受此通道套接字上的关联。

      如果此通道处于非阻塞模式,则如果没有未决关联,此方法将立即返回 null。否则它将无限期阻塞,直到有可用的新关联或发生 I/O 错误。

      该方法返回的SCTPChannel,如果有的话,无论该通道的阻塞模式如何,都将处于阻塞模式。

      如果安装了安全管理器,则对于每个新关联,此方法验证安全管理器的 checkAccept 方法是否允许关联的远程对等方的地址和端口号。

      返回:
      新关联的 SCTP 通道,或者 null 如果此通道处于非阻塞模式并且没有可用的关联被接受
      抛出:
      ClosedChannelException - 如果此通道关闭
      AsynchronousCloseException - 如果另一个线程在接受操作正在进行时关闭此通道
      ClosedByInterruptException - 如果另一个线程在accept操作进行时中断当前线程,从而关闭通道并设置当前线程的中断状态
      NotYetBoundException - 如果此通道的套接字尚未绑定
      SecurityException - 如果安装了安全管理器并且它不允许访问新关联的远程对等点
      IOException - 如果发生其他 I/O 错误
    • bind

      public final SctpServerChannel  bind(SocketAddress  local) throws IOException
      将通道的套接字绑定到本地地址并配置套接字以监听关联。

      此方法的工作原理就好像调用它等同于计算表达式:

       bind(local, 0);
       
      参数:
      local - 绑定套接字的本地地址,或 null 将套接字绑定到自动分配的套接字地址
      返回:
      这个通道
      抛出:
      ClosedChannelException - 如果此通道关闭
      AlreadyBoundException - 如果这个通道已经绑定
      UnsupportedAddressTypeException - 如果不支持给定地址的类型
      SecurityException - 如果安装了安全管理器并且其 checkListen 方法拒绝操作
      IOException - 如果发生其他 I/O 错误
    • bind

      public abstract SctpServerChannel  bind(SocketAddress  local, int backlog) throws IOException
      将通道的套接字绑定到本地地址并配置套接字以监听关联。

      该方法用于建立套接字和本地地址之间的关系。一旦建立了关系,套接字就会保持绑定状态,直到通道关闭。这种关系不一定与地址 local 相关,因为它可能会被 unbindAddress 删除,但是一旦成功完成此方法的调用,总会有至少一个本地地址绑定到通道的套接字。

      一旦通道的套接字成功绑定到特定地址(不会自动分配),更多地址可以使用 bindAddress 绑定到它,或使用 unbindAddress 删除。

      backlog 参数是套接字上未决关联的最大数量。它的确切语义是特定于实现的。一个实现可以强加一个特定于实现的最大长度,或者可以选择忽略该参数。如果 backlog 参数的值为 0 或负值,则使用特定于实现的默认值。

      参数:
      local - 绑定套接字的本地地址,或 null 将套接字绑定到自动分配的套接字地址
      backlog - 挂起关联的最大数量
      返回:
      这个通道
      抛出:
      ClosedChannelException - 如果此通道关闭
      AlreadyBoundException - 如果这个通道已经绑定
      UnsupportedAddressTypeException - 如果不支持给定地址的类型
      SecurityException - 如果安装了安全管理器并且其 checkListen 方法拒绝操作
      IOException - 如果发生其他 I/O 错误
    • bindAddress

      public abstract SctpServerChannel  bindAddress(InetAddress  address) throws IOException
      将给定地址添加到通道套接字的绑定地址。

      给定的地址不能是 wildcard 地址。在调用此方法之前,必须先使用 bind 绑定通道,否则将抛出 NotYetBoundException bind 方法将 SocketAddress 作为其参数,该参数通常包含端口号和地址。随后使用此方法绑定的地址只是地址,因为 SCTP 端口号在通道的生命周期内保持不变。

      在此方法成功完成后接受的新关联将与给定地址关联。

      参数:
      address - 添加到套接字绑定地址的地址
      返回:
      这个通道
      抛出:
      ClosedChannelException - 如果此通道关闭
      NotYetBoundException - 如果此通道尚未绑定
      AlreadyBoundException - 如果此通道已绑定到给定地址
      IllegalArgumentException - 如果地址是 nullwildcard 地址
      IOException - 如果发生其他 I/O 错误
    • unbindAddress

      public abstract SctpServerChannel  unbindAddress(InetAddress  address) throws IOException
      从通道套接字的绑定地址中删除给定地址。

      给定的地址不能是 wildcard 地址。在调用此方法之前,必须先使用 bind 绑定通道,否则将抛出 NotYetBoundException 。如果在没有将 address 作为其绑定地址之一或仅绑定一个本地地址的通道上调用此方法,则此方法将抛出 IllegalUnbindException 。通道套接字使用bind 绑定到的初始地址可能会从通道套接字的绑定地址中删除。

      此方法成功完成后接受的新关联将不会与给定地址关联。

      参数:
      address - 要从套接字的绑定地址中删除的地址
      返回:
      这个通道
      抛出:
      ClosedChannelException - 如果此通道关闭
      NotYetBoundException - 如果此通道尚未绑定
      IllegalArgumentException - 如果地址是 nullwildcard 地址
      IllegalUnbindException - 如果实现不支持从监听套接字中删除地址,则 address 未绑定到通道的套接字,或者通道只有一个地址绑定到它
      IOException - 如果发生其他 I/O 错误
    • getAllLocalAddresses

      public abstract Set <SocketAddress > getAllLocalAddresses() throws IOException
      返回此通道的套接字绑定到的所有套接字地址。
      返回:
      此通道的套接字绑定到的所有套接字地址,如果未绑定通道的套接字,则为空Set
      抛出:
      ClosedChannelException - 如果通道关闭
      IOException - 如果发生 I/O 错误
    • getOption

      public abstract <T> T getOption(SctpSocketOption <T> name) throws IOException
      返回套接字选项的值。
      类型参数:
      T - 套接字选项值的类型
      参数:
      name - 套接字选项
      返回:
      套接字选项的值。 null 的值可能是某些套接字选项的有效值。
      抛出:
      UnsupportedOperationException - 如果此通道不支持套接字选项
      ClosedChannelException - 如果此通道关闭
      IOException - 如果发生 I/O 错误
      参见:
    • setOption

      public abstract <T> SctpServerChannel  setOption(SctpSocketOption <T> name, T value) throws IOException
      设置套接字选项的值。
      类型参数:
      T - 套接字选项值的类型
      参数:
      name - 套接字选项
      value - 套接字选项的值。 null 的值可能是某些套接字选项的有效值。
      返回:
      这个通道
      抛出:
      UnsupportedOperationException - 如果此通道不支持套接字选项
      IllegalArgumentException - 如果该值不是此套接字选项的有效值
      ClosedChannelException - 如果此通道关闭
      IOException - 如果发生 I/O 错误
      参见:
    • supportedOptions

      public abstract Set <SctpSocketOption <?>> supportedOptions()
      返回此通道支持的一组套接字选项。

      即使在通道关闭后,此方法仍将继续返回选项集。

      返回:
      此通道支持的一组套接字选项
    • validOps

      public final int validOps()
      返回标识此通道支持的操作的操作集。

      SCTP 服务通道仅支持接受新关联,因此该方法返回 SelectionKey.OP_ACCEPT

      指定者:
      validOps 在类 SelectableChannel
      返回:
      有效操作集