- java.lang.Object
-
- java.nio.channels.AsynchronousServerSocketChannel
-
- 实现的所有接口
-
Closeable
,AutoCloseable
,AsynchronousChannel
,Channel
,NetworkChannel
public abstract class AsynchronousServerSocketChannel extends Object implements 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错误
-
-