Team LiB
Previous Section Next Section

ServerSocketjava.net

Java 1.0

This class is used by servers to listen for connection requests from clients. Before you can use a ServerSocket, it must be bound to the local network address that it is to listen on. All of the ServerSocket( ) constructors except for the no-argument constructor create a server socket and bind it to the specified local port, optionally specifying a "connection backlog" value: this is the number of client connection attempts that may be queued up before subsequent connection attempts are rejected.

In Java 1.4 and later, the no-argument ServerSocket( ) constructor allows you to create an unbound socket. Doing this allows you to bind the socket using the bind( ) method which uses a SocketAddress object rather than a port number. It also allows you to call setReuseAddress( ), which is only useful when done before the socket is bound. Call isBound( ) to determine whether a server socket has been bound. If it has, use getLocalSocketAddress( ) or getLocalPort( ) and getInetAddress( ) to obtain the local address it is bound to.

Once a ServerSocket has been bound, you can call the accept( ) method to listen on the specified port and block until the client requests a connection on the port. When this happens, accept( ) accepts the connection, creating and returning a Socket the server can use to communicate with the client. A typical server starts a new thread to handle the communication with the client and calls accept( ) again to listen for another connection.

ServerSocket defines several methods for setting socket options that affect the socket's behavior. setSoTimeout( ) specifies the number of milliseconds that accept( ) should block before throwing an InterruptedIOException. A value of 0 means that it should block forever. setReceiveBufferSize( ) is an advanced option that suggests the desired size for the internal receive buffer of the Socket objects returned by accept( ). This is only a hint, and may be ignored by the system. setReuseAddress( ) is another advanced option; it specifies that a bind( ) operation should succeed even if the local bind address is still nominally in use by a socket that is in the process of shutting down.

Like all sockets, a ServerSocket should be closed with the close( ) method when it is no longer needed. Once closed, a ServerSocket should not be used, except to call the isClosed( ) method which returns TRue if it has been closed.

The getChannel( ) method is a link between this ServerSocket class and the New I/O java.nio.channels.ServerSocketChannel class. It returns the ServerSocketChannel associated with this ServerSocket if there is one. Note, however, that this method always returns null for sockets created with any of the ServerSocket( ) constructors. If you create a ServerSocketChannel object, and obtain a ServerSocket from it, however, then the getChannel( ) method provides a way to link back to the parent channel.

public class ServerSocket {
// Public Constructors
1.4  public ServerSocket( ) throws java.io.IOException;  
     public ServerSocket(int port) throws java.io.IOException;  
     public ServerSocket(int port, int backlog) 
throws java.io.IOException;  
1.1  public ServerSocket(int port, int backlog, InetAddress bindAddr) throws java.io.IOException;  
// Public Class Methods
     public static void setSocketFactory(SocketImplFactory fac) 
throws java.io.IOException;     synchronized
// Public Instance Methods
     public Socket accept( ) throws java.io.IOException;  
1.4  public void bind(SocketAddress endpoint) throws java.io.IOException;  
1.4  public void bind(SocketAddress endpoint, int backlog) throws java.io.IOException;  
     public void close( ) throws java.io.IOException;  
1.4  public java.nio.channels.ServerSocketChannel getChannel( );     
 constant default:null
     public InetAddress getInetAddress( );           default:null
     public int getLocalPort( );                     default:-1
1.4  public SocketAddress getLocalSocketAddress( );      default:null
1.4  public int getReceiveBufferSize( ) throws SocketException;     synchronized default:43690
1.4  public boolean getReuseAddress( ) throws SocketException;    default:true
1.1  public int getSoTimeout( ) 
throws java.io.IOException;     synchronized default:0
1.4  public boolean isBound( );                  default:false
1.4  public boolean isClosed( );                 default:false
5.0  public void setPerformancePreferences(int connectionTime, int latency, 
int bandwidth);     empty
1.4  public void setReceiveBufferSize(int size) 
throws SocketException;     synchronized
1.4  public void setReuseAddress(boolean on) throws SocketException;  
1.1  public void setSoTimeout(int timeout) throws SocketException;     synchronized
// Public Methods Overriding Object
     public String toString( );  
// Protected Instance Methods
1.1  protected final void implAccept(Socket s) throws java.io.IOException;  
}

Subclasses

javax.net.ssl.SSLServerSocket

Returned By

java.nio.channels.ServerSocketChannel.socket( ), javax.net.ServerSocketFactory.createServerSocket( )

    Team LiB
    Previous Section Next Section