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