Class AsynchronousServerSocketChannel
- All Implemented Interfaces:
Closeable, AutoCloseable, AsynchronousChannel, Channel, NetworkChannel
An asynchronous server-socket channel is created by invoking the
open method of this class.
A newly-created asynchronous server-socket channel is open but not yet bound.
It can be bound to a local address and configured to listen for connections
by invoking the bind method. Once bound,
the accept method
is used to initiate the accepting of connections to the channel's socket.
An attempt to invoke the accept method on an unbound channel will
cause a NotYetBoundException to be thrown.
Channels of this type are safe for use by multiple concurrent threads
though at most one accept operation can be outstanding at any time.
If a thread initiates an accept operation before a previous accept operation
has completed then an AcceptPendingException will be thrown.
Socket options are configured using the setOption method. Channels of this type support the following options:
Additional (implementation specific) options may also be supported.
Option Name Description SO_RCVBUFThe size of the socket receive buffer SO_REUSEADDRRe-use address
Usage Example:
final AsynchronousServerSocketChannel listener =
AsynchronousServerSocketChannel.open().bind(new InetSocketAddress(5000));
listener.accept(null, new CompletionHandler<AsynchronousSocketChannel,Void>() {
public void completed(AsynchronousSocketChannel ch, Void att) {
// accept the next connection
listener.accept(null, this);
// handle this connection
handle(ch);
}
public void failed(Throwable exc, Void att) {
...
}
});
- Since:
- 1.7
-
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedInitializes a new instance of this class. -
Method Summary
Modifier and TypeMethodDescriptionabstract Future<AsynchronousSocketChannel> accept()Accepts a connection.abstract <A> voidaccept(A attachment, CompletionHandler<AsynchronousSocketChannel, ? super A> handler) Accepts a connection.bind(SocketAddress local) Binds the channel's socket to a local address and configures the socket to listen for connections.abstract AsynchronousServerSocketChannelbind(SocketAddress local, int backlog) Binds the channel's socket to a local address and configures the socket to listen for connections.abstract SocketAddressReturns the socket address that this channel's socket is bound to.open()Opens an asynchronous server-socket channel.open(AsynchronousChannelGroup group) Opens an asynchronous server-socket channel.provider()Returns the provider that created this channel.abstract <T> AsynchronousServerSocketChannelsetOption(SocketOption<T> name, T value) Sets the value of a socket option.Methods declared in class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitModifier and TypeMethodDescriptionprotected Objectclone()Answers a new instance of the same class as the receiver, whose slots have been filled in with the values in the slots of the receiver.booleanCompares the argument to the receiver, and answers true if they represent the same object using a class specific comparison.protected voidfinalize()Deprecated, for removal: This API element is subject to removal in a future version.May cause performance issues, deadlocks and hangs.getClass()Answers the unique instance of java.lang.Class which represents the class of the receiver.inthashCode()Answers an integer hash code for the receiver.final voidnotify()Causes one thread which iswaiting on the receiver to be made ready to run.final voidCauses all threads which arewaiting on the receiver to be made ready to run.toString()Answers a string containing a concise, human-readable description of the receiver.final voidwait()Causes the thread which sent this message to be made not ready to run pending some change in the receiver (as indicated bynotifyornotifyAll).final voidwait(long time) Causes the thread which sent this message to be made not ready to run either pending some change in the receiver (as indicated bynotifyornotifyAll) or the expiration of the timeout.final voidwait(long time, int frac) Causes the thread which sent this message to be made not ready to run either pending some change in the receiver (as indicated bynotifyornotifyAll) or the expiration of the timeout.Methods declared in interface AsynchronousChannel
closeMethods declared in interface NetworkChannel
getOption, supportedOptionsModifier and TypeMethodDescription<T> TgetOption(SocketOption<T> name) Returns the value of a socket option.Set<SocketOption<?>> Returns a set of the socket options supported by this channel.
-
Constructor Details
-
AsynchronousServerSocketChannel
Initializes a new instance of this class.- Parameters:
provider- The provider that created this channel
-
-
Method Details
-
provider
Returns the provider that created this channel.- Returns:
- The provider that created this channel
-
open
public static AsynchronousServerSocketChannel open(AsynchronousChannelGroup group) throws IOException Opens an asynchronous server-socket channel.The new channel is created by invoking the
openAsynchronousServerSocketChannelmethod on theAsynchronousChannelProviderobject that created the given group. If the group parameter isnullthen the resulting channel is created by the system-wide default provider, and bound to the default group.- Parameters:
group- The group to which the newly constructed channel should be bound, ornullfor the default group- Returns:
- A new asynchronous server socket channel
- Throws:
ShutdownChannelGroupException- If the channel group is shutdownIOException- If an I/O error occurs
-
open
Opens an asynchronous server-socket channel.This method returns an asynchronous server socket channel that is bound to the default group. This method is equivalent to evaluating the expression:
open((AsynchronousChannelGroup)null);- Returns:
- A new asynchronous server socket channel
- Throws:
IOException- If an I/O error occurs
-
bind
Binds the channel's socket to a local address and configures the socket to listen for connections.An invocation of this method is equivalent to the following:
bind(local, 0);- Specified by:
bindin interfaceNetworkChannel- Parameters:
local- The local address to bind the socket, ornullto bind to an automatically assigned socket address- Returns:
- This channel
- Throws:
AlreadyBoundException- If the socket is already boundUnsupportedAddressTypeException- If the type of the given address is not supportedClosedChannelException- If the channel is closedIOException- If some other I/O error occurs- See Also:
-
bind
public abstract AsynchronousServerSocketChannel bind(SocketAddress local, int backlog) throws IOException Binds the channel's socket to a local address and configures the socket to listen for connections.This method is used to establish an association between the socket and a local address. Once an association is established then the socket remains bound until the associated channel is closed.
The
backlogparameter is the maximum number of pending connections on the socket. Its exact semantics are implementation specific. In particular, an implementation may impose a maximum length or may choose to ignore the parameter altogether. If thebacklogparameter has the value0, or a negative value, then an implementation specific default is used.- Parameters:
local- The local address to bind the socket, ornullto bind to an automatically assigned socket addressbacklog- The maximum number of pending connections- Returns:
- This channel
- Throws:
AlreadyBoundException- If the socket is already boundUnsupportedAddressTypeException- If the type of the given address is not supportedClosedChannelException- If the channel is closedIOException- If some other I/O error occurs
-
setOption
public abstract <T> AsynchronousServerSocketChannel setOption(SocketOption<T> name, T value) throws IOException Description copied from interface:NetworkChannelSets the value of a socket option.- Specified by:
setOptionin interfaceNetworkChannel- Type Parameters:
T- The type of the socket option value- Parameters:
name- The socket optionvalue- The value of the socket option. A value ofnullmay be a valid value for some socket options.- Returns:
- This channel
- Throws:
IllegalArgumentException- If the value is not a valid value for this socket optionClosedChannelException- If this channel is closedIOException- If an I/O error occurs- See Also:
-
accept
public abstract <A> void accept(A attachment, CompletionHandler<AsynchronousSocketChannel, ? super A> handler) Accepts a connection.This method initiates an asynchronous operation to accept a connection made to this channel's socket. The
handlerparameter is a completion handler that is invoked when a connection is accepted (or the operation fails). The result passed to the completion handler is theAsynchronousSocketChannelto the new connection.When a new connection is accepted then the resulting
AsynchronousSocketChannelwill be bound to the sameAsynchronousChannelGroupas this channel. If the group isshutdownand a connection is accepted, then the connection is closed, and the operation completes with anIOExceptionand causeShutdownChannelGroupException.To allow for concurrent handling of new connections, the completion handler is not invoked directly by the initiating thread when a new connection is accepted immediately (see Threading).
- Type Parameters:
A- The type of the attachment- Parameters:
attachment- The object to attach to the I/O operation; can benullhandler- The handler for consuming the result- Throws:
AcceptPendingException- If an accept operation is already in progress on this channelNotYetBoundException- If this channel's socket has not yet been boundShutdownChannelGroupException- If the channel group has terminated
-
accept
Accepts a connection.This method initiates an asynchronous operation to accept a connection made to this channel's socket. The method behaves in exactly the same manner as the
accept(Object, CompletionHandler)method except that instead of specifying a completion handler, this method returns aFuturerepresenting the pending result. TheFuture'sgetmethod returns theAsynchronousSocketChannelto the new connection on successful completion.- Returns:
- a
Futureobject representing the pending result - Throws:
AcceptPendingException- If an accept operation is already in progress on this channelNotYetBoundException- If this channel's socket has not yet been bound
-
getLocalAddress
Returns the socket address that this channel's socket is bound to.Where the channel is
boundto an Internet Protocol socket address then the return value from this method is of typeInetSocketAddress.- Specified by:
getLocalAddressin interfaceNetworkChannel- Returns:
- The
SocketAddressthat the socket is bound to;nullif the channel's socket is not bound - Throws:
ClosedChannelException- If the channel is closedIOException- If an I/O error occurs
-