- 所有已实现的接口:
-
Closeable
,AutoCloseable
,Channel
,InterruptibleChannel
SCTPServerChannel
通过调用此类的open
方法来创建。新创建的SCTP服务器通道是打开的,但尚未绑定。尝试在未绑定通道上调用accept
方法将导致抛出NotYetBoundException
。可以通过调用此类定义的一个bind
方法之一来绑定SCTP服务器通道。
使用setOption
方法配置套接字选项。SCTP服务器套接字通道支持以下选项:
还可能支持其他(特定于实现的)选项。通过调用
选项名称 描述 SCTP_INIT_MAXSTREAMS
本地端点在关联初始化期间请求的最大流数
supportedOptions
方法获取支持的选项列表。
SCTP服务器通道可安全地供多个并发线程使用。
- 自1.7版本起:
- 1.7
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionabstract SctpChannel
accept()
在此通道的套接字上接受一个关联。final SctpServerChannel
bind
(SocketAddress local) 将通道的套接字绑定到本地地址并配置套接字以侦听关联。abstract SctpServerChannel
bind
(SocketAddress local, int backlog) 将通道的套接字绑定到本地地址并配置套接字以侦听关联。abstract SctpServerChannel
bindAddress
(InetAddress address) 将给定地址添加到通道套接字的绑定地址中。abstract Set
<SocketAddress> 返回此通道套接字绑定的所有套接字地址。abstract <T> T
getOption
(SctpSocketOption<T> name) 返回套接字选项的值。static SctpServerChannel
open()
打开一个SCTP服务器通道。abstract <T> SctpServerChannel
setOption
(SctpSocketOption<T> name, T value) 设置套接字选项的值。abstract Set
<SctpSocketOption<?>> 返回此通道支持的套接字选项集。abstract SctpServerChannel
unbindAddress
(InetAddress address) 从通道套接字的绑定地址中删除给定地址。final int
validOps()
返回标识此通道支持的操作的操作集。Methods declared in class java.nio.channels.spi.AbstractSelectableChannel
blockingLock, configureBlocking, implCloseChannel, implCloseSelectableChannel, implConfigureBlocking, isBlocking, isRegistered, keyFor, provider, register
Methods declared in class java.nio.channels.SelectableChannel
register
Methods declared in class java.nio.channels.spi.AbstractInterruptibleChannel
begin, close, end, isOpen
-
Constructor Details
-
SctpServerChannel
初始化此类的新实例。- 参数:
-
provider
- 此通道的选择器提供程序
-
-
Method Details
-
open
打开一个SCTP服务器通道。新通道的套接字最初未绑定;必须通过其套接字的一个
bind
方法之一将其绑定到特定地址,然后才能接受关联。- 返回:
- 一个新的SCTP服务器通道
- 抛出:
-
UnsupportedOperationException
- 如果不支持SCTP协议 -
IOException
- 如果发生I/O错误
-
accept
在此通道的套接字上接受一个关联。如果此通道处于非阻塞模式,则如果没有待处理的关联,此方法将立即返回
null
。否则,它将无限期地阻塞,直到有新的关联可用或发生I/O错误。此方法返回的
SCTPChannel
(如果有)将处于阻塞模式,无论此通道的阻塞模式如何。如果安装了安全管理器,则对于每个新关联,此方法将验证关联的远程对等方的地址和端口号是否被安全管理器的
checkAccept
方法允许。- 返回:
-
新关联的SCTP通道,如果此通道处于非阻塞模式且没有可接受的关联,则返回
null
- 抛出:
-
ClosedChannelException
- 如果此通道已关闭 -
AsynchronousCloseException
- 如果另一个线程在接受操作进行中关闭此通道 -
ClosedByInterruptException
- 如果另一个线程在接受操作进行中中断当前线程,从而关闭通道并设置当前线程的中断状态 -
NotYetBoundException
- 如果此通道的套接字尚未绑定 -
SecurityException
- 如果安装了安全管理器且不允许访问新关联的远程对等方 -
IOException
- 如果发生其他I/O错误
-
bind
将通道的套接字绑定到本地地址并配置套接字以侦听关联。此方法的工作方式就好像调用它等效于评估表达式:
bind(local, 0);
- 参数:
-
local
- 要绑定套接字的本地地址,或null
以将套接字绑定到自动分配的套接字地址 - 返回:
- 此通道
- 抛出:
-
ClosedChannelException
- 如果此通道已关闭 -
AlreadyBoundException
- 如果此通道已绑定 -
UnsupportedAddressTypeException
- 如果给定地址的类型不受支持 -
SecurityException
- 如果安装了安全管理器并且其checkListen
方法拒绝操作 -
IOException
- 如果发生其他I/O错误
-
bind
将通道的套接字绑定到本地地址并配置套接字以侦听关联。此方法用于在套接字和本地地址之间建立关系。建立关系后,套接字将保持绑定状态,直到通道关闭。此关系可能不一定是与地址
local
相关的,因为它可能会被unbindAddress
移除,但是一旦此方法的调用成功完成,通道的套接字将始终至少绑定到一个本地地址。一旦通道的套接字成功绑定到特定地址(而不是自动分配的地址),则可以使用
bindAddress
绑定更多地址,或使用unbindAddress
删除地址。backlog参数是套接字上挂起关联的最大数量。其确切语义是特定于实现的。实现可能会施加特定于实现的最大长度,或者选择忽略该参数。如果backlog参数的值为
0
或负值,则使用特定于实现的默认值。- 参数:
-
local
- 要绑定套接字的本地地址,或null
以将套接字绑定到自动分配的套接字地址 -
backlog
- 挂起关联的最大数量 - 返回:
- 此通道
- 抛出:
-
ClosedChannelException
- 如果此通道已关闭 -
AlreadyBoundException
- 如果此通道已绑定 -
UnsupportedAddressTypeException
- 如果给定地址的类型不受支持 -
SecurityException
- 如果安装了安全管理器并且其checkListen
方法拒绝操作 -
IOException
- 如果发生其他I/O错误
-
bindAddress
将给定地址添加到通道套接字的绑定地址中。给定地址不能是
通配符
地址。在调用此方法之前,必须首先使用bind
绑定通道,否则将抛出NotYetBoundException
异常。bind
方法以SocketAddress
作为其参数,通常包含端口号和地址。使用此方法后续绑定的地址仅仅是地址,因为通道的SCTP端口号在通道的生命周期内保持不变。成功完成此方法后接受的新关联将与给定地址关联。
- 参数:
-
address
- 要添加到套接字绑定地址的地址 - 返回:
- 此通道
- 抛出:
-
ClosedChannelException
- 如果此通道已关闭 -
NotYetBoundException
- 如果此通道尚未绑定 -
AlreadyBoundException
- 如果此通道已绑定到给定地址 -
IllegalArgumentException
- 如果地址为null
或为通配符
地址 -
IOException
- 如果发生其他I/O错误
-
unbindAddress
从通道套接字的绑定地址中删除给定地址。给定地址不能是
通配符
地址。在调用此方法之前,必须首先使用bind
绑定通道,否则将抛出NotYetBoundException
异常。如果在没有address
作为其绑定地址之一的通道上调用此方法,或者只有一个本地地址绑定到通道上,则此方法将抛出IllegalUnbindException
。使用bind
绑定通道套接字的初始地址可能会从通道套接字的绑定地址中删除。成功完成此方法后接受的新关联将不会与给定地址关联。
- 参数:
-
address
- 要从套接字绑定地址中删除的地址 - 返回:
- 此通道
- 抛出:
-
ClosedChannelException
- 如果此通道已关闭 -
NotYetBoundException
- 如果此通道尚未绑定 -
IllegalArgumentException
- 如果地址为null
或为通配符
地址 -
IllegalUnbindException
- 如果实现不支持从监听套接字中删除地址,address
未绑定到通道套接字,或通道只绑定了一个地址 -
IOException
- 如果发生其他I/O错误
-
getAllLocalAddresses
返回此通道套接字绑定的所有套接字地址。- 返回:
-
此通道套接字绑定的所有套接字地址,如果通道套接字未绑定,则返回空的
Set
- 抛出:
-
ClosedChannelException
- 如果通道已关闭 -
IOException
- 如果发生I/O错误
-
getOption
返回套接字选项的值。- 类型参数:
-
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
返回此通道支持的套接字选项的集合。即使通道已关闭,此方法仍将返回选项集。
- 返回:
- 此通道支持的套接字选项的集合
-
validOps
public final int validOps()返回标识此通道支持的操作的操作集。SCTP服务器通道仅支持接受新关联,因此此方法返回
SelectionKey.OP_ACCEPT
。- 指定者:
-
validOps
在类SelectableChannel
- 返回:
- 有效操作集
-