public abstract class AsynchronousServerSocketChannel extends Object implements AsynchronousChannel, NetworkChannel
异步服务器套接字通道是通过调用该类的open方法创建。一个新创建的异步服务器套接字通道是打开的,但尚未绑定。它可以绑定到一个本地地址和配置为监听连接通过调用bind方法。一旦结合,其accept方法用于启动接收到信道的插座连接。试图调用accept方法对未绑定的通道会引起NotYetBoundException被。
这种类型的通道是安全的,使用多个并发线程,虽然在大多数一个接受操作可以在任何时间突出。如果一个线程启动一个接受手术前前接受手术已完成并AcceptPendingException将抛出。
套接字选项的配置使用setOption方法。这种类型的通道支持以下选项:
附加(具体实施)选项也可以支持。
Option Name 描述 SO_RCVBUFThe size of the socket receive buffer SO_REUSEADDRRe-use address
使用示例:
最后asynchronousserversocketchannel听众=asynchronousserversocketchannel。open()。绑定(新inetsocketaddress(5000));听众接受(null,新completionhandler < asynchronoussocketchannel,无效>(){公共无效完成(asynchronoussocketchannel CH,空隙ATT){接受下一个连接侦听器。接受(空,此);/处理这个连接手柄(通道);}公共无效失败(Throwable EXC,空隙ATT){…}});
| Modifier | Constructor and Description |
|---|---|
protected |
AsynchronousServerSocketChannel(AsynchronousChannelProvider provider)
初始化该类的一个新实例。
|
| Modifier and Type | Method and Description |
|---|---|
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)
设置套接字选项的值。
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitclosegetOption, supportedOptionsprotected AsynchronousServerSocketChannel(AsynchronousChannelProvider provider)
provider -供应商,创造了这个频道
public final AsynchronousChannelProvider provider()
public static AsynchronousServerSocketChannel open(AsynchronousChannelGroup group) throws IOException
新的渠道是通过调用创建组的AsynchronousChannelProvider openAsynchronousServerSocketChannel方法创建的对象。如果该组参数null然后得到的通道是由系统默认提供程序创建,并绑定到默认组。
group -集团的新建通道应绑定,或
null为默认组
ShutdownChannelGroupException如果通道组关机
IOException如果I/O错误发生
public static AsynchronousServerSocketChannel open() throws IOException
此方法返回绑定到默认组的异步服务器套接字通道。此方法相当于对表达式进行评估:
open((AsynchronousChannelGroup)null);
IOException如果I/O错误发生
public final AsynchronousServerSocketChannel bind(SocketAddress local) throws IOException
此方法的调用相当于下面的:
bind(local, 0);
bind 接口
NetworkChannel
local -绑定套接字的本地地址,或
null绑定到一个套接字地址的自动分配
AlreadyBoundException如果插座已绑定
UnsupportedAddressTypeException如果给定的地址的类型不支持
SecurityException如果安全管理器安装和否定一个未指定的权限。此接口的实现应指定任何所需的权限。
ClosedChannelException如果通道关闭
IOException -如果其他I/O错误发生
NetworkChannel.getLocalAddress()
public abstract AsynchronousServerSocketChannel bind(SocketAddress local, int backlog) throws IOException
此方法用于建立套接字和本地地址之间的关联。一旦建立了关联,那么套接字仍然绑定,直到关联的信道关闭。
的backlog参数是最大数量的挂起连接在插座上。它的确切的语义是实现特定的。特别是,一个实现可以处以最大长度或可以选择忽略参数的根。如果backlog参数的值0,或负的值,然后执行特定的默认使用。
local -绑定套接字的本地地址,或
null绑定到一个套接字地址的自动分配
backlog -最大数量的挂起连接
AlreadyBoundException如果插座已绑定
UnsupportedAddressTypeException如果给定的地址的类型不支持
SecurityException -如果一个安全管理已安装的
checkListen否认操作方法
ClosedChannelException如果通道关闭
IOException -如果其他I/O错误发生
public abstract <T> AsynchronousServerSocketChannel setOption(SocketOption<T> name, T value) throws IOException
NetworkChannel
setOption 接口
NetworkChannel
T的套接字选项的值的类型
name的套接字选项
value -套接字选项的值。一个价值
null可能对于一些套接字选项的有效值。
IllegalArgumentException -如果值不是此套接字选项的有效值
ClosedChannelException -如果这通道关闭
IOException如果I/O错误发生
StandardSocketOptions
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如果通道组已终止
public abstract Future<AsynchronousSocketChannel> accept()
此方法启动一个异步操作,接受这个通道的套接字的连接。该方法的行为以同样的方式方法的accept(Object, CompletionHandler)不是指定完成处理,该方法返回一个Future表示等待结果。的Future的get方法返回AsynchronousSocketChannel在成功完成新的连接。
Future对象
AcceptPendingException -如果接受手术已经在进步在这个频道
NotYetBoundException -如果这通道插座尚未绑定
public abstract SocketAddress getLocalAddress() throws IOException
在渠道bound到互联网协议的套接字地址然后从这个方法返回值的类型是InetSocketAddress。
如果存在安全管理器,它的checkConnect方法被调用的本地地址和-1作为它的参数看看操作是允许的。如果操作是不允许的,一个SocketAddress代表loopback地址和本地端口的套接字通道返回。
getLocalAddress 接口
NetworkChannel
SocketAddress,socket,或
SocketAddress代表回送地址如果由安全经理否认,或
null如果信道的插座是不受约束的
ClosedChannelException如果通道关闭
IOException如果I/O错误发生
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.