- java.lang.Object
-
- java.nio.channels.AsynchronousServerSocketChannel
-
- 实现的所有接口
-
Closeable
,AutoCloseable
,AsynchronousChannel
,Channel
,NetworkChannel
public abstract class AsynchronousServerSocketChannelextends Objectimplements AsynchronousChannel, NetworkChannel
面向流的侦听套接字的异步通道。通过调用此类的
open
方法创建异步服务器套接字通道。 新创建的异步服务器套接字通道已打开但尚未绑定。 它可以绑定到本地地址,并配置为通过调用bind
方法来侦听连接。 绑定后,accept
方法用于启动接受通道套接字的连接。 尝试在未绑定的通道上调用accept
方法将导致抛出NotYetBoundException
。这种类型的通道可以安全地供多个并发线程使用,但最多只有一个接受操作可以在任何时候都很出色。 如果线程在先前的接受操作完成之前启动接受操作,则将抛出
AcceptPendingException
。使用
setOption
方法配置套接字选项。 此类型的频道支持以下选项:Option Name 描述 SO_RCVBUF
The size of the socket receive buffer SO_REUSEADDR
Re-use address 用法示例:
final AsynchronousServerSocketChannel listener = AsynchronousServerSocketChannel.open().bind(new InetSocketAddress(5000)); listener.accept(null, new CompletionHandler<AsynchronousSocketChannel,Void>() { public void completed(AsynchronousSocketChannel ch, Void att) { // accept the next connection listener.accept(null, this); // handle this connection handle(ch); } public void failed(Throwable exc, Void att) { ... } });
- 从以下版本开始:
- 1.7
-
-
构造方法摘要
构造方法 变量 构造器 描述 protected
AsynchronousServerSocketChannel(AsynchronousChannelProvider provider)
初始化此类的新实例。
-
方法摘要
所有方法 静态方法 实例方法 抽象方法 具体的方法 变量和类型 方法 描述 abstract Future<AsynchronousSocketChannel>
accept()
接受连接。abstract <A> void
accept(A attachment, CompletionHandler<AsynchronousSocketChannel,? super A> handler)
接受连接。AsynchronousServerSocketChannel
bind(SocketAddress local)
将通道的套接字绑定到本地地址并配置套接字以侦听连接。abstract AsynchronousServerSocketChannel
bind(SocketAddress local, int backlog)
将通道的套接字绑定到本地地址并配置套接字以侦听连接。abstract SocketAddress
getLocalAddress()
返回此通道的套接字绑定的套接字地址。static AsynchronousServerSocketChannel
open()
打开异步服务器套接字通道。static AsynchronousServerSocketChannel
open(AsynchronousChannelGroup group)
打开异步服务器套接字通道。AsynchronousChannelProvider
provider()
返回创建此通道的提供程序。abstract <T> AsynchronousServerSocketChannel
setOption(SocketOption<T> name, T value)
设置套接字选项的值。-
声明方法的类 java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
声明方法的接口 java.nio.channels.AsynchronousChannel
close
-
声明方法的接口 java.nio.channels.NetworkChannel
getOption, supportedOptions
-
-
-
-
构造方法详细信息
-
AsynchronousServerSocketChannel
protected AsynchronousServerSocketChannel(AsynchronousChannelProvider provider)
初始化此类的新实例。- 参数
-
provider
- 创建此频道的提供商
-
-
方法详细信息
-
provider
public final AsynchronousChannelProvider provider()
返回创建此通道的提供程序。- 结果
- 创建此渠道的提供商
-
open
public static AsynchronousServerSocketChannel open(AsynchronousChannelGroup group) throws IOException
打开异步服务器套接字通道。通过在创建给定组的
AsynchronousChannelProvider
对象上调用openAsynchronousServerSocketChannel
方法来创建新通道。 如果group参数为null
则生成的通道由系统范围的默认提供程序创建,并绑定到默认组 。- 参数
-
group
- 应绑定新构造的通道的组,或默认组的null
- 结果
- 新的异步服务器套接字通道
- 异常
-
ShutdownChannelGroupException
- 如果通道组已关闭 -
IOException
- 如果发生I / O错误
-
open
public static AsynchronousServerSocketChannel open() throws IOException
打开异步服务器套接字通道。此方法返回绑定到默认组的异步服务器套接字通道。 此方法等效于评估表达式:
open((AsynchronousChannelGroup)null);
- 结果
- 新的异步服务器套接字通道
- 异常
-
IOException
- 如果发生I / O错误
-
bind
public final AsynchronousServerSocketChannel bind(SocketAddress local) throws IOException
将通道的套接字绑定到本地地址并配置套接字以侦听连接。调用此方法等效于以下内容:
bind(local, 0);
- Specified by:
-
bind
接口NetworkChannel
- 参数
-
local
- 绑定套接字的本地地址,或null
绑定到自动分配的套接字地址 - 结果
- 这个频道
- 异常
-
AlreadyBoundException
- 如果套接字已绑定 -
UnsupportedAddressTypeException
- 如果不支持给定地址的类型 -
SecurityException
- 如果安装了安全管理器,它将拒绝未指定的权限。 此接口的实现应指定任何所需的权限。 -
ClosedChannelException
- 如果频道已关闭 -
IOException
- 如果发生其他一些I / O错误 - 另请参见:
-
NetworkChannel.getLocalAddress()
-
bind
public abstract AsynchronousServerSocketChannel bind(SocketAddress local, int backlog) throws IOException
将通道的套接字绑定到本地地址并配置套接字以侦听连接。此方法用于在套接字和本地地址之间建立关联。 一旦建立关联,则套接字保持绑定,直到关联的信道关闭。
backlog
参数是套接字上的最大挂起连接数。 它的确切语义是特定于实现的。 特别地,实现可以施加最大长度或者可以选择忽略参数altogther。 如果backlog
参数的值为0
或负值,则使用特定于实现的默认值。- 参数
-
local
- 绑定套接字的本地地址,或null
绑定到自动分配的套接字地址 -
backlog
- 最大挂起连接数 - 结果
- 这个频道
- 异常
-
AlreadyBoundException
- 如果套接字已绑定 -
UnsupportedAddressTypeException
- 如果不支持给定地址的类型 -
SecurityException
- 如果已安装安全管理器且其checkListen
方法拒绝该操作 -
ClosedChannelException
- 如果频道已关闭 -
IOException
- 如果发生其他一些I / O错误
-
setOption
public abstract <T> AsynchronousServerSocketChannel setOption(SocketOption<T> name, T value) throws IOException
从界面复制的说明:NetworkChannel
设置套接字选项的值。- Specified by:
-
setOption
,接口NetworkChannel
- 参数类型
-
T
- 套接字选项值的类型 - 参数
-
name
- 套接字选项 -
value
- 套接字选项的值。 值null
可能是某些套接字选项的有效值。 - 结果
- 这个频道
- 异常
-
IllegalArgumentException
- 如果该值不是此套接字选项的有效值 -
ClosedChannelException
- 如果此频道已关闭 -
IOException
- 如果发生I / O错误 - 另请参见:
-
StandardSocketOptions
-
accept
public abstract <A> void accept(A attachment, CompletionHandler<AsynchronousSocketChannel,? super A> handler)
接受连接。此方法启动异步操作以接受与此通道的套接字建立的连接。
handler
参数是在接受连接(或操作失败)时调用的完成处理程序。 传递给完成处理程序的结果是AsynchronousSocketChannel
到新连接。当接受新连接时,结果
AsynchronousSocketChannel
将绑定到与此通道相同的AsynchronousChannelGroup
。 如果该组是shutdown
并且接受了连接,则关闭连接,并且操作以IOException
完成,并导致ShutdownChannelGroupException
。为了允许并发处理新连接,当立即接受新连接时,启动线程不直接调用完成处理程序(参见Threading )。
如果已安装安全管理器,则它将验证安全管理器
checkAccept
方法是否允许连接的远程端点的地址和端口号。 权限检查是使用受此方法的调用上下文限制的权限执行的。 如果权限检查失败,则关闭连接,操作以SecurityException
完成。- 参数类型
-
A
- 附件的类型 - 参数
-
attachment
- 要附加到I / O操作的对象; 可以是null
-
handler
- 使用结果的处理程序 - 异常
-
AcceptPendingException
- 如果此通道上的接受操作已在进行中 -
NotYetBoundException
- 如果此通道的套接字尚未绑定 -
ShutdownChannelGroupException
- 如果通道组已终止
-
accept
public abstract Future<AsynchronousSocketChannel> accept()
接受连接。此方法启动异步操作以接受与此通道的套接字建立的连接。 该方法的行为方式与
accept(Object, CompletionHandler)
方法完全相同,只是该方法返回表示挂起结果的Future
,而不是指定完成处理程序。 该Future
的get
方法返回AsynchronousSocketChannel
就成功完成了新的连接。- 结果
- 表示挂起结果的
Future
对象 - 异常
-
AcceptPendingException
- 如果此通道上的接受操作已在进行中 -
NotYetBoundException
- 如果此通道的套接字尚未绑定
-
getLocalAddress
public abstract SocketAddress getLocalAddress() throws IOException
返回此通道的套接字绑定的套接字地址。如果通道是
bound
到Internet协议套接字地址,则此方法的返回值是InetSocketAddress
类型。如果存在安全管理器集,则使用本地地址和
-1
作为其参数调用其checkConnect
方法,以查看是否允许该操作。 如果不允许该操作,则SocketAddress
表示loopback
地址的SocketAddress和通道套接字的本地端口。- Specified by:
-
getLocalAddress
,界面NetworkChannel
- 结果
- 该
SocketAddress
这套接字绑定到,或SocketAddress
代表的环回地址,如果安全管理器拒绝,或null
如果通道的套接字不绑定 - 异常
-
ClosedChannelException
- 如果频道已关闭 -
IOException
- 如果发生I / O错误
-
-