- java.lang.Object
-
- java.nio.channels.spi.AbstractInterruptibleChannel
-
- java.nio.channels.SelectableChannel
-
- java.nio.channels.spi.AbstractSelectableChannel
-
- com.sun.nio.sctp.SctpServerChannel
-
- All Implemented Interfaces:
-
Closeable
,AutoCloseable
,Channel
,InterruptibleChannel
public abstract class SctpServerChannel extends AbstractSelectableChannel
用于面向消息的侦听SCTP插座的可选通道。通过调用此类的
open
方法创建一个SCTPServerChannel
。 新创建的SCTP服务器通道已打开但尚未绑定。 尝试调用未绑定通道的accept
方法将导致抛出NotYetBoundException
。 可以通过调用此类定义的一个bind
方法来绑定SCTP服务器通道。套接字选项使用
setOption
方法进行配置。 SCTP服务器插槽通道支持以下选项:Option Name 描述 SCTP_INIT_MAXSTREAMS
The maximum number of streams requested by the local endpoint during association initialization supportedOptions
方法获得的。SCTP服务器通道可以安全使用多个并发线程。
- 从以下版本开始:
- 1.7
-
-
构造方法摘要
构造方法 Modifier Constructor 描述 protected
SctpServerChannel(SelectorProvider provider)
初始化此类的新实例。
-
方法摘要
所有方法 静态方法 接口方法 抽象方法 具体的方法 Modifier and Type 方法 描述 abstract SctpChannel
accept()
在此频道的套接字上接受关联。SctpServerChannel
bind(SocketAddress local)
将通道的套接字绑定到本地地址,并配置套接字以侦听关联。abstract SctpServerChannel
bind(SocketAddress local, int backlog)
将通道的套接字绑定到本地地址,并配置套接字以侦听关联。abstract SctpServerChannel
bindAddress(InetAddress address)
将给定地址添加到通道插座的绑定地址。abstract Set<SocketAddress>
getAllLocalAddresses()
返回此通道的套接字所绑定的所有套接字地址。abstract <T> T
getOption(SctpSocketOption<T> name)
返回套接字选项的值。static SctpServerChannel
open()
打开SCTP服务器通道。abstract <T> SctpServerChannel
setOption(SctpSocketOption<T> name, T value)
设置套接字选项的值。abstract Set<SctpSocketOption<?>>
supportedOptions()
返回此通道支持的一组套接字选项。abstract SctpServerChannel
unbindAddress(InetAddress address)
从通道的套接字的绑定地址中删除给定的地址。int
validOps()
返回确定此频道支持的操作的操作集。-
Methods inherited from class java.nio.channels.spi.AbstractInterruptibleChannel
begin, close, end, isOpen
-
Methods inherited from class java.nio.channels.spi.AbstractSelectableChannel
blockingLock, configureBlocking, implCloseChannel, implCloseSelectableChannel, implConfigureBlocking, isBlocking, isRegistered, keyFor, provider, register
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from class java.nio.channels.SelectableChannel
register
-
-
-
-
构造方法详细信息
-
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 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
地与地址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
- 如果地址是null
或wildcard
地址 -
IOException
- 如果发生其他I / O错误
-
unbindAddress
public abstract SctpServerChannel unbindAddress(InetAddress address) throws IOException
从通道的套接字的绑定地址中删除给定的地址。给定的地址不能是
wildcard
地址。 在调用此方法之前,必须首先使用bind
绑定通道,否则抛出NotYetBoundException
。 如果在没有address
作为其绑定地址之一或只有一个本地地址绑定的通道上调用此方法,则该方法将抛出IllegalUnbindException
。 通道的套接字使用bind
绑定的初始地址可能会从通道套接字的绑定地址中删除。此方法成功完成后接受的新关联将不与给定地址相关联。
- 参数
-
address
- 从套接字的绑定地址中删除的地址 - 结果
- 这个频道
- 异常
-
ClosedChannelException
- 如果此通道关闭 -
NotYetBoundException
- 如果此频道尚未绑定 -
IllegalArgumentException
- 如果地址是null
或wildcard
地址 -
IllegalUnbindException
- 如果实现不支持从侦听套接字中删除地址,则address
未绑定到通道的套接字,或者该通道只有一个地址与其绑定 -
IOException
- 如果发生其他I / O错误
-
getAllLocalAddresses
public abstract Set<SocketAddress> getAllLocalAddresses() throws IOException
返回此通道的套接字所绑定的所有套接字地址。- 结果
-
该通道的套接字所绑定的所有套接字地址,如果通道的套接字未绑定,
Set
空Set
- 异常
-
ClosedChannelException
- 如果通道关闭 -
IOException
- 如果发生I / O错误
-
getOption
public abstract <T> T getOption(SctpSocketOption<T> name) throws IOException
返回套接字选项的值。- 参数类型
-
T
- 套接字选项值的类型 - 参数
-
name
- 套接字选项 - 结果
-
套接字选项的值。
值为
null
可能是某些套接字选项的有效值。 - 异常
-
UnsupportedOperationException
- 如果此通道不支持套接字选项 -
ClosedChannelException
- 如果此通道关闭 -
IOException
- 如果发生I / O错误 - 另请参见:
-
SctpStandardSocketOptions
-
setOption
public abstract <T> SctpServerChannel setOption(SctpSocketOption<T> name, T value) throws IOException
设置套接字选项的值。- 参数类型
-
T
- 套接字选项值的类型 - 参数
-
name
- 套接字选项 -
value
- 套接字选项的值。 值为null
可能是某些套接字选项的有效值。 - 结果
- 这个频道
- 异常
-
UnsupportedOperationException
- 如果该通道不支持套接字选项 -
IllegalArgumentException
- 如果该值不是此套接字选项的有效值 -
ClosedChannelException
- 如果此通道关闭 -
IOException
- 如果发生I / O错误 - 另请参见:
-
SctpStandardSocketOptions
-
supportedOptions
public abstract Set<SctpSocketOption<?>> supportedOptions()
返回此通道支持的一组套接字选项。即使通道关闭后,此方法仍将继续返回该选项。
- 结果
- 此通道支持的一组套接字选项
-
validOps
public final int validOps()
返回确定此频道支持的操作的操作集。SCTP服务器通道只支持接受新的关联,所以这个方法返回
SelectionKey.OP_ACCEPT
。- Specified by:
-
validOps
在SelectableChannel
- 结果
- 有效操作集
-
-