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 
用法示例:
  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) {
          ...
      }
  });  
      | 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参数是套接字上挂起的连接的最大数量。 其确切语义是实现具体的。 特别地,实现可以施加最大长度,或者可以选择忽略参数altogther。 如果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 - 
            A的类型 
           attachment - 要附加到I / O操作的对象; 
            可以是null 
           handler - 消费结果的处理程序 
           AcceptPendingException - 如果此通道上已经有接受操作 
           NotYetBoundException - 如果此通道的套接字尚未绑定 
           ShutdownChannelGroupException - 如果通道组已终止 
           public abstract Future<AsynchronousSocketChannel> accept()
 此方法启动异步操作以接受对该通道的套接字进行的连接。 该方法的行为方式与accept(Object, CompletionHandler)方法完全相同,不同的是,该方法不是指定完成处理程序,而是返回一个Future待处理结果的Future 。 Future的get方法在成功完成后返回到新连接的AsynchronousSocketChannel。 
Future待处理结果的 
            Future对象 
           AcceptPendingException - 如果此通道上已经有接受操作 
           NotYetBoundException - 如果此通道的套接字尚未绑定 
           public abstract SocketAddress getLocalAddress() throws IOException
 通道为Internet协议套接字地址的bound ,则此方法的返回值为InetSocketAddress 。 
 如果有一个安全管理器集,它的checkConnect方法被调用本地地址和-1作为参数来查看是否允许该操作。 如果不允许的操作, SocketAddress代表loopback个地址和通道的套接字的本地端口返回。 
getLocalAddress中的 
            NetworkChannel 
           SocketAddress ,该套接字绑定到,或 
            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.