DatagramSocketImpl, SocketImplpublic interface SocketOptions
SocketImpl and DatagramSocketImpl. Subclasses of these two classes should override the getOption(int) and setOption(int, Object) methods of this interface in order to support their own options. The methods and constants defined in this interface are for implementation only. If you're not subclassing SocketImpl or DatagramSocketImpl, then you won't use these directly. There are type-safe methods to get/set each of these options in Socket, ServerSocket, DatagramSocket and MulticastSocket.
| Modifier and Type | Field | Description |
|---|---|---|
static final int |
IP_MULTICAST_IF |
See StandardSocketOptions.IP_MULTICAST_IF for description of this socket option. |
static final int |
IP_MULTICAST_IF2 |
This option is used to both set and fetch the outgoing interface on which the multicast packets are sent. |
static final int |
IP_MULTICAST_LOOP |
See StandardSocketOptions.IP_MULTICAST_LOOP for description of this socket option. |
static final int |
IP_TOS |
See StandardSocketOptions.IP_TOS for description of this socket option. |
static final int |
SO_BINDADDR |
Fetch the local address binding of a socket. |
static final int |
SO_BROADCAST |
See StandardSocketOptions.SO_BROADCAST for description of this socket option. |
static final int |
SO_KEEPALIVE |
See StandardSocketOptions.SO_KEEPALIVE for description of this socket option. |
static final int |
SO_LINGER |
See StandardSocketOptions.SO_LINGER for description of this socket option. |
static final int |
SO_OOBINLINE |
When this option is set, any TCP urgent data received on the socket will be received through the socket input stream. |
static final int |
SO_RCVBUF |
See StandardSocketOptions.SO_RCVBUF for description of this socket option. |
static final int |
SO_REUSEADDR |
See StandardSocketOptions.SO_REUSEADDR for description of this socket option. |
static final int |
SO_REUSEPORT |
See StandardSocketOptions.SO_REUSEPORT for description of this socket option. |
static final int |
SO_SNDBUF |
See StandardSocketOptions.SO_SNDBUF for description of this socket option. |
static final int |
SO_TIMEOUT |
This option is used to both set and fetch a timeout value on blocking Socket operations: ServerSocket.accept() Socket InputStream.read() DatagramSocket.receive() |
static final int |
TCP_NODELAY |
See StandardSocketOptions.TCP_NODELAY for description of this socket option. |
@Native static final int TCP_NODELAY
StandardSocketOptions.TCP_NODELAY for description of this socket option.@Native static final int SO_BINDADDR
INADDR_ANY, meaning any local address on a multi-homed host. A multi-homed host can use this option to accept connections to only one of its addresses (in the case of a ServerSocket or DatagramSocket), or to specify its return address to the peer (for a Socket or DatagramSocket). The type of this option's value is an InetAddress.@Native static final int SO_REUSEADDR
StandardSocketOptions.SO_REUSEADDR for description of this socket option.@Native static final int SO_REUSEPORT
StandardSocketOptions.SO_REUSEPORT for description of this socket option.@Native static final int SO_BROADCAST
StandardSocketOptions.SO_BROADCAST for description of this socket option.@Native static final int IP_MULTICAST_IF
StandardSocketOptions.IP_MULTICAST_IF for description of this socket option.@Native static final int IP_MULTICAST_IF2
@Native static final int IP_MULTICAST_LOOP
StandardSocketOptions.IP_MULTICAST_LOOP for description of this socket option.@Native static final int IP_TOS
StandardSocketOptions.IP_TOS for description of this socket option.@Native static final int SO_LINGER
StandardSocketOptions.SO_LINGER for description of this socket option. Set the value to Boolean.FALSE or an integer less than 0 with setOption(int, Object) to disable this option. An integer greater than or equal to 0 will enable the option and will represent the linger interval.
If this option is enabled then getOption(int) will return an integer value representing the linger interval, else the return value will be Boolean.FALSE.
@Native static final int SO_TIMEOUT
Socket operations: This option must be set prior to entering a blocking operation to take effect. If the timeout expires and the operation would continue to block, then InterruptedIOException is raised. The Socket is not closed in such cases.
@Native static final int SO_SNDBUF
StandardSocketOptions.SO_SNDBUF for description of this socket option.@Native static final int SO_RCVBUF
StandardSocketOptions.SO_RCVBUF for description of this socket option.@Native static final int SO_KEEPALIVE
StandardSocketOptions.SO_KEEPALIVE for description of this socket option.@Native static final int SO_OOBINLINE
void setOption(int optID, Object value) throws SocketException
optID. If the option is to be enabled, and it takes an option-specific "value", this is passed in value. The actual type of value is option-specific, and it is an error to pass something that isn't of the expected type: SocketImpl s;
...
s.setOption(SO_LINGER, Integer.valueOf(10));
// OK - set SO_LINGER w/ timeout of 10 sec.
s.setOption(SO_LINGER, Double.valueOf(10));
// ERROR - expects java.lang.Integer
Boolean: s.setOption(TCP_NODELAY, Boolean.TRUE);
// OK - enables TCP_NODELAY, a binary option
Boolean.FALSE: s.setOption(TCP_NODELAY, Boolean.FALSE);
// OK - disables TCP_NODELAY
s.setOption(SO_LINGER, Boolean.FALSE);
// OK - disables SO_LINGER
Boolean.FALSE implicitly enables it.optID - identifies the optionvalue - the parameter of the socket optionSocketException - if the option is unrecognized, the socket is closed, or some low-level error occurredObject getOption(int optID) throws SocketException
Boolean.TRUE if enabled, Boolean.FALSE if disabled, e.g.: SocketImpl s;
...
Boolean noDelay = (Boolean)(s.getOption(TCP_NODELAY));
if (noDelay.booleanValue()) {
// true if TCP_NODELAY is enabled...
...
}
For options that take a particular type as a parameter, this method will return the parameter's value, else it will return Boolean.FALSE:
Object o = s.getOption(SO_LINGER);
if (o instanceof Integer) {
System.out.print("Linger time is " + ((Integer)o).intValue());
} else {
// the true type of o is java.lang.Boolean.FALSE;
}
optID - an int identifying the option to fetchSocketException - if the socket is closed or if optID is unknown along the protocol stack
© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/net/SocketOptions.html