ServerSocketChannel


ServerSocketChannel java.nio.channels

Java 1.4 closeable

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.

Figure 13-38. java.nio.channels.ServerSocketChannel

 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  ( );   } 

Returned By

java.net.ServerSocket.getChannel( ) , java.nio.channels.spi.SelectorProvider.openServerSocketChannel( )



Java In A Nutshell
Java In A Nutshell, 5th Edition
ISBN: 0596007736
EAN: 2147483647
Year: 2004
Pages: 1220

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net