public class StandardSocketOption extends Object
Modifier and Type | Field and Description |
---|---|
static SocketOption<Boolean> |
SO_KEEPALIVE
Keep connection alive.
|
static SocketOption<Integer> |
SO_LINGER
Linger on close if data is present.
|
static SocketOption<Integer> |
SO_RCVBUF
The size of the socket receive buffer.
|
static SocketOption<Boolean> |
SO_REUSEADDR
Re-use address.
|
static SocketOption<Integer> |
SO_SNDBUF
The size of the socket send buffer.
|
static SocketOption<Boolean> |
TCP_NODELAY
Disable the Nagle algorithm.
|
Constructor and Description |
---|
StandardSocketOption() |
public static final SocketOption<Boolean> SO_KEEPALIVE
The value of this socket option is a Boolean
that represents
whether the option is enabled or disabled. When the SO_KEEPALIVE
option is enabled the operating system may use a keep-alive
mechanism to periodically probe the other end of a connection when the
connection is otherwise idle. The exact semantics of the keep alive
mechanism is system dependent and therefore unspecified.
The initial value of this socket option is FALSE
. The socket
option may be enabled or disabled at any time.
public static final SocketOption<Integer> SO_SNDBUF
The value of this socket option is an Integer
that is the size of
the socket send buffer in bytes. The socket send buffer is an output
buffer used by the networking implementation. It may need to be increased
for high-volume connections. The value of the socket option is a
hint to the implementation to size the buffer and the actual
size may differ. The socket option can be queried to retrieve the actual
size.
For datagram-oriented sockets, the size of the send buffer may limit the size of the datagrams that may be sent by the socket. Whether datagrams larger than the buffer size are sent or discarded is system dependent.
The initial/default size of the socket send buffer and the range of allowable values is system dependent although a negative size is not allowed. An attempt to set the socket send buffer to larger than its maximum size causes it to be set to its maximum size.
An implementation allows this socket option to be set before the socket is bound or connected. Whether an implementation allows the socket send buffer to be changed after the socket is bound is system dependent.
Socket.setSendBufferSize(int)
public static final SocketOption<Integer> SO_RCVBUF
The value of this socket option is an Integer
that is the size of
the socket receive buffer in bytes. The socket receive buffer is an input
buffer used by the networking implementation. It may need to be increased
for high-volume connections or decreased to limit the possible backlog of
incoming data. The value of the socket option is a hint to the
implementation to size the buffer and the actual size may differ.
For datagram-oriented sockets, the size of the receive buffer may limit the size of the datagrams that can be received. Whether datagrams larger than the buffer size can be received is system dependent. Increasing the socket receive buffer may be important for cases where datagrams arrive in bursts faster than they can be processed.
In the case of stream-oriented sockets and the TCP/IP protocol, the size of the socket receive buffer may be used when advertising the size of the TCP receive window to the remote peer.
The initial/default size of the socket receive buffer and the range of allowable values is system dependent although a negative size is not allowed. An attempt to set the socket receive buffer to larger than its maximum size causes it to be set to its maximum size.
An implementation allows this socket option to be set before the socket is bound or connected. Whether an implementation allows the socket receive buffer to be changed after the socket is bound is system dependent.
public static final SocketOption<Boolean> SO_REUSEADDR
The value of this socket option is a Boolean
that represents
whether the option is enabled or disabled. The exact semantics of this
socket option are socket type and system dependent.
In the case of stream-oriented sockets, this socket option will usually determine whether the socket can be bound to a socket address when a previous connection involving that socket address is in the TIME_WAIT state. On implementations where the semantics differ, and the socket option is not required to be enabled in order to bind the socket when a previous connection is in this state, then the implementation may choose to ignore this option.
For datagram-oriented sockets the socket option is used to allow multiple programs bind to the same address. This option should be enabled when the socket is to be used for Internet Protocol (IP) multicasting.
An implementation allows this socket option to be set before the socket is bound or connected. Changing the value of this socket option after the socket is bound has no effect. The default value of this socket option is system dependent.
public static final SocketOption<Integer> SO_LINGER
The value of this socket option is an Integer
that controls the
action taken when unsent data is queued on the socket and a method to
close the socket is invoked. If the value of the socket option is zero or
greater, then it represents a timeout value, in seconds, known as the
linger interval. The linger interval is the timeout for the
close
method to block while the operating system attempts to
transmit the unsent data or it decides that it is unable to transmit the
data. If the value of the socket option is less than zero then the option
is disabled. In that case the close
method does not wait until
unsent data is transmitted; if possible the operating system will
transmit any unsent data before the connection is closed.
This socket option is intended for use with sockets that are configured
in blocking
mode
only. The behavior of the close
method when this option is
enabled on a non-blocking socket is not defined.
The initial value of this socket option is a negative value, meaning that the option is disabled. The option may be enabled, or the linger interval changed, at any time. The maximum value of the linger interval is system dependent. Setting the linger interval to a value that is greater than its maximum value causes the linger interval to be set to its maximum value.
Socket.setSoLinger(boolean, int)
public static final SocketOption<Boolean> TCP_NODELAY
The value of this socket option is a Boolean
that represents
whether the option is enabled or disabled. The socket option is specific
to stream-oriented sockets using the TCP/IP protocol. TCP/IP uses an
algorithm known as The Nagle Algorithm to coalesce short
segments and improve network efficiency.
The default value of this socket option is FALSE
. The socket
option should only be enabled in cases where it is known that the
coalescing impacts performance. The socket option may be enabled at any
time. In other words, the Nagle Algorithm can be disabled. Once the
option is enabled, it is system dependent whether it can be subsequently
disabled. If it cannot, then invoking the setOption
method to
disable the option has no effect.
Copyright © 2016. All rights reserved.