模块  jdk.sctp
软件包  com.sun.nio.sctp

Class SctpServerChannel

  • 实现的所有接口
    CloseableAutoCloseableChannelInterruptibleChannel

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

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

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

    Socket options
    Option Name 描述
    SCTP_INIT_MAXSTREAMS The maximum number of streams requested by the local endpoint during association initialization
    还可以支持其他(特定于实现的)选项。 支持的选项列表是通过调用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 - 如果另一个线程在接受操作正在进行时中断当前线程,从而关闭通道并设置当前线程的中断状态
        NotYetBoundException - 如果此通道的套接字尚未绑定
        SecurityException - 如果已安装安全管理器且不允许访问新关联的远程对等方
        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
        返回此通道的套接字绑定到的所有套接字地址。
        结果
        此通道的套接字绑定的所有套接字地址,如果通道的套接字未绑定, SetSet
        异常
        ClosedChannelException - 如果频道已关闭
        IOException - 如果发生I / O错误
      • supportedOptions

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

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

        结果
        此通道支持的一组套接字选项
      • validOps

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

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

        Specified by:
        validOps在类 SelectableChannel
        结果
        有效操作集