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;
}
java.nio.channels.ServerSocketChannel.socket( ),
javax.net.ServerSocketFactory.createServerSocket(
)