This
class
is the java.nio version of
java.net.ServerSocket. It is a selectable channel
that can be used by servers to accept connections from clients.
Unlike other channel classes in this package, this class cannot be
used for reading or writing bytes: it does not implement any of the
ByteChannel interfaces, and exists only to accept
and establish connections with clients, not to communicate with those
clients. ServerSocketChannel differs from
java.net.ServerSocket in two important ways: it
can put into nonblocking mode and used with a
Selector, and its accept(
) method returns a
SocketChannel rather than a
Socket, so that communication with the client
whose connection was just accepted can be done using the
java.nio APIs.
Create a new ServerSocketChannel with the static
open( ) method. Next, call socket(
) to obtain the associated ServerSocket
object, and use its bind( ) method to bind the
server socket to a specific port on the local host. You can also call
any other ServerSocket methods to configure other
socket options at this point.
To accept a new connection through this
ServerSocketChannel, simply call accept(
). If the channel is in blocking mode, this method will
block until a client connects, and will then return a
SocketChannel that is connected to the client. In
nonblocking mode, (see the inherited configureBlocking(
) method) accept( ) returns a
SocketChannel only if there is a client currently
waiting to connect, and otherwise immediately returns
null. To be notified when a client is waiting to
connect, use the inherited register( ) method to
register nonblocking a ServerSocketChannel with a
Selector and specify an interest in accept
operations with the SelectionKey.OP_ACCEPT
constant. See Selector and
SelectionKey for further details.
Note that the SocketChannel object returned by the
accept( ) method is always in nonblocking mode,
regardless of the blocking mode of the
ServerSocketChannel.
ServerSocketChannel is thread-safe; only one
thread may call the accept( ) method at a time.
When a ServerSocketChannel is no longer required,
close it with the inherited close( ) method.

public abstract class ServerSocketChannel extends java.nio.channels.spi.
AbstractSelectableChannel {
// Protected Constructors
protected ServerSocketChannel(java.nio.channels.spi.SelectorProvider
provider);
// Public Class Methods
public static ServerSocketChannel open( ) throws java.io.IOException;
// Public Instance Methods
public abstract SocketChannel accept( ) throws java.io.IOException;
public abstract java.net.ServerSocket socket( );
// Public Methods Overriding SelectableChannel
public final int validOps( );
}