模块  java.base
软件包  java.nio.channels

Class AsynchronousServerSocketChannel

  • 实现的所有接口
    CloseableAutoCloseableAsynchronousChannelChannelNetworkChannel

    public abstract class AsynchronousServerSocketChannel
    extends Object
    implements AsynchronousChannel, NetworkChannel
    面向流的侦听套接字的异步通道。

    通过调用此类的open方法创建异步服务器套接字通道。 新创建的异步服务器套接字通道已打开但尚未绑定。 它可以绑定到本地地址,并配置为通过调用bind方法来侦听连接。 绑定后, accept方法用于启动接受通道套接字的连接。 尝试在未绑定的通道上调用accept方法将导致抛出NotYetBoundException

    这种类型的通道可以安全地供多个并发线程使用,但最多只有一个接受操作可以在任何时候都很出色。 如果线程在先前的接受操作完成之前启动接受操作,则将抛出AcceptPendingException

    使用setOption方法配置套接字选项。 此类型的频道支持以下选项:

    Socket options
    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
    • 构造方法详细信息

      • AsynchronousServerSocketChannel

        protected AsynchronousServerSocketChannel​(AsynchronousChannelProvider provider)
        初始化此类的新实例。
        参数
        provider - 创建此频道的提供商