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
使用示例:
最后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, wait
close
getOption, supportedOptions
protected 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.