public abstract class AsynchronousServerSocketChannel extends Object implements AsynchronousChannel, NetworkChannel
 An asynchronous server-socket channel is created by invoking the
 open method of this class.
 A newly-created asynchronous server-socket channel is open but not yet bound.
 It can be bound to a local address and configured to listen for connections
 by invoking the bind method. Once bound,
 the accept method
 is used to initiate the accepting of connections to the channel's socket.
 An attempt to invoke the accept method on an unbound channel will
 cause a NotYetBoundException to be thrown.
 
 Channels of this type are safe for use by multiple concurrent threads
 though at most one accept operation can be outstanding at any time.
 If a thread initiates an accept operation before a previous accept operation
 has completed then an AcceptPendingException will be thrown.
 
 Socket options are configured using the setOption method. Channels of this type support the following options:
 
Additional (implementation specific) options may also be supported.
Option Name Description SO_RCVBUFThe size of the socket receive buffer SO_REUSEADDRRe-use address 
Usage Example:
  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)Initializes a new instance of this class. | 
| Modifier and Type | Method and Description | 
|---|---|
| abstract Future<AsynchronousSocketChannel> | accept()Accepts a connection. | 
| abstract <A> void | accept(A attachment,
      CompletionHandler<AsynchronousSocketChannel,? super A> handler)Accepts a connection. | 
| AsynchronousServerSocketChannel | bind(SocketAddress local)Binds the channel's socket to a local address and configures the socket to
 listen for connections. | 
| abstract AsynchronousServerSocketChannel | bind(SocketAddress local,
    int backlog)Binds the channel's socket to a local address and configures the socket to
 listen for connections. | 
| abstract SocketAddress | getLocalAddress()Returns the socket address that this channel's socket is bound to. | 
| static AsynchronousServerSocketChannel | open()Opens an asynchronous server-socket channel. | 
| static AsynchronousServerSocketChannel | open(AsynchronousChannelGroup group)Opens an asynchronous server-socket channel. | 
| AsynchronousChannelProvider | provider()Returns the provider that created this channel. | 
| abstract <T> AsynchronousServerSocketChannel | setOption(SocketOption<T> name,
         T value)Sets the value of a socket option. | 
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitclosegetOption, supportedOptionsprotected AsynchronousServerSocketChannel(AsynchronousChannelProvider provider)
provider - The provider that created this channelpublic final AsynchronousChannelProvider provider()
public static AsynchronousServerSocketChannel open(AsynchronousChannelGroup group) throws IOException
 The new channel is created by invoking the openAsynchronousServerSocketChannel method on the AsynchronousChannelProvider object that created
 the given group. If the group parameter is null then the
 resulting channel is created by the system-wide default provider, and
 bound to the default group.
group - The group to which the newly constructed channel should be bound,
          or null for the default groupShutdownChannelGroupException - If the channel group is shutdownIOException - If an I/O error occurspublic static AsynchronousServerSocketChannel open() throws IOException
This method returns an asynchronous server socket channel that is bound to the default group. This method is equivalent to evaluating the expression:
open((AsynchronousChannelGroup)null);
IOException - If an I/O error occurspublic final AsynchronousServerSocketChannel bind(SocketAddress local) throws IOException
An invocation of this method is equivalent to the following:
bind(local, 0);
bind in interface NetworkChannellocal - The local address to bind the socket, or null to bind
          to an automatically assigned socket addressAlreadyBoundException - If the socket is already boundUnsupportedAddressTypeException - If the type of the given address is not supportedSecurityException - If a security manager is installed and it denies an unspecified
          permission. An implementation of this interface should specify
          any required permissions.ClosedChannelException - If the channel is closedIOException - If some other I/O error occursNetworkChannel.getLocalAddress()public abstract AsynchronousServerSocketChannel bind(SocketAddress local, int backlog) throws IOException
This method is used to establish an association between the socket and a local address. Once an association is established then the socket remains bound until the associated channel is closed.
 The backlog parameter is the maximum number of pending
 connections on the socket. Its exact semantics are implementation specific.
 In particular, an implementation may impose a maximum length or may choose
 to ignore the parameter altogther. If the backlog parameter has
 the value 0, or a negative value, then an implementation specific
 default is used.
local - The local address to bind the socket, or null to bind
          to an automatically assigned socket addressbacklog - The maximum number of pending connectionsAlreadyBoundException - If the socket is already boundUnsupportedAddressTypeException - If the type of the given address is not supportedSecurityException - If a security manager has been installed and its checkListen method denies the operationClosedChannelException - If the channel is closedIOException - If some other I/O error occurspublic abstract <T> AsynchronousServerSocketChannel setOption(SocketOption<T> name, T value) throws IOException
NetworkChannelsetOption in interface NetworkChannelT - The type of the socket option valuename - The socket optionvalue - The value of the socket option. A value of null may be
          a valid value for some socket options.IllegalArgumentException - If the value is not a valid value for this socket optionClosedChannelException - If this channel is closedIOException - If an I/O error occursStandardSocketOptionspublic abstract <A> void accept(A attachment,
                                CompletionHandler<AsynchronousSocketChannel,? super A> handler)
 This method initiates an asynchronous operation to accept a
 connection made to this channel's socket. The handler parameter is
 a completion handler that is invoked when a connection is accepted (or
 the operation fails). The result passed to the completion handler is
 the AsynchronousSocketChannel to the new connection.
 
 When a new connection is accepted then the resulting AsynchronousSocketChannel will be bound to the same AsynchronousChannelGroup as this channel. If the group is shutdown and a connection is accepted,
 then the connection is closed, and the operation completes with an IOException and cause ShutdownChannelGroupException.
 
To allow for concurrent handling of new connections, the completion handler is not invoked directly by the initiating thread when a new connection is accepted immediately (see Threading).
 If a security manager has been installed then it verifies that the
 address and port number of the connection's remote endpoint are permitted
 by the security manager's checkAccept
 method. The permission check is performed with privileges that are restricted
 by the calling context of this method. If the permission check fails then
 the connection is closed and the operation completes with a SecurityException.
A - The type of the attachmentattachment - The object to attach to the I/O operation; can be nullhandler - The handler for consuming the resultAcceptPendingException - If an accept operation is already in progress on this channelNotYetBoundException - If this channel's socket has not yet been boundShutdownChannelGroupException - If the channel group has terminatedpublic abstract Future<AsynchronousSocketChannel> accept()
 This method initiates an asynchronous operation to accept a
 connection made to this channel's socket. The method behaves in exactly
 the same manner as the accept(Object, CompletionHandler) method
 except that instead of specifying a completion handler, this method
 returns a Future representing the pending result. The Future's get method returns the AsynchronousSocketChannel to the new connection on successful completion.
Future object representing the pending resultAcceptPendingException - If an accept operation is already in progress on this channelNotYetBoundException - If this channel's socket has not yet been boundpublic abstract SocketAddress getLocalAddress() throws IOException
 Where the channel is bound to an Internet Protocol
 socket address then the return value from this method is of type InetSocketAddress.
 
 If there is a security manager set, its checkConnect method is
 called with the local address and -1 as its arguments to see
 if the operation is allowed. If the operation is not allowed,
 a SocketAddress representing the
 loopback address and the
 local port of the channel's socket is returned.
getLocalAddress in interface NetworkChannelSocketAddress that the socket is bound to, or the
          SocketAddress representing the loopback address if
          denied by the security manager, or null if the
          channel's socket is not boundClosedChannelException - If the channel is closedIOException - If an I/O error occurs 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, 2025, Oracle and/or its affiliates.  All rights reserved. Use is subject to license terms. Also see the documentation redistribution policy.