public interface

SocketOptions

java.net.SocketOptions
Known Indirect Subclasses

Class Overview

Defines an interface for socket implementations to get and set socket options. It is implemented by the classes SocketImpl and DatagramSocketImpl.

Summary

Constants
int IP_MULTICAST_IF The interface used to send multicast packets.
int IP_MULTICAST_IF2 This option can be used to set one specific interface on a multihomed host on which incoming connections are accepted.
int IP_MULTICAST_LOOP This option specifies whether the local loopback of multicast packets is enabled or disabled.
int IP_TOS This option specifies the value for the type-of-service field of the IPv4 header, or the traffic class field of the IPv6 header.
int SO_BINDADDR This option can be used to set one specific interface on a multihomed host on which incoming connections are accepted.
int SO_BROADCAST This option can be used to enable broadcasting on datagram sockets.
int SO_KEEPALIVE This option specifies whether socket implementations can send keepalive messages if no data has been sent for a longer time.
int SO_LINGER Number of seconds to wait when closing a socket if there is still some buffered data to be sent.
int SO_OOBINLINE This boolean option specifies whether sending TCP urgent data is supported on this socket or not.
int SO_RCVBUF The size in bytes of a socket's receive buffer.
int SO_REUSEADDR This option specifies whether a reuse of a local address is allowed even if an other socket is not yet removed by the operating system.
int SO_SNDBUF The size in bytes of a socket's send buffer.
int SO_TIMEOUT Timeout in milliseconds for blocking accept or read/receive operations (but not write/send operations).
int TCP_NODELAY Whether data is sent immediately on this socket.
Public Methods
abstract Object getOption(int optID)
Gets the value for the specified socket option.
abstract void setOption(int optID, Object val)
Sets the value of the specified socket option.

Constants

public static final int IP_MULTICAST_IF

Since: API Level 1

The interface used to send multicast packets. This option is only available on a MulticastSocket.

Constant Value: 16 (0x00000010)

public static final int IP_MULTICAST_IF2

Since: API Level 1

This option can be used to set one specific interface on a multihomed host on which incoming connections are accepted. It's only available on server-side sockets. This option supports setting outgoing interfaces with either IPv4 or IPv6 addresses.

Constant Value: 31 (0x0000001f)

public static final int IP_MULTICAST_LOOP

Since: API Level 1

This option specifies whether the local loopback of multicast packets is enabled or disabled. This option is enabled by default on multicast sockets.

Constant Value: 18 (0x00000012)

public static final int IP_TOS

Since: API Level 1

This option specifies the value for the type-of-service field of the IPv4 header, or the traffic class field of the IPv6 header. These correspond to the IP_TOS and IPV6_TCLASS socket options. These may be ignored by the underlying OS. Values must be between 0 and 255 inclusive.

See RFC 1349 for more about IPv4 and RFC 2460 for more about IPv6.

Constant Value: 3 (0x00000003)

public static final int SO_BINDADDR

Since: API Level 1

This option can be used to set one specific interface on a multihomed host on which incoming connections are accepted. It's only available on server-side sockets.

Constant Value: 15 (0x0000000f)

public static final int SO_BROADCAST

Since: API Level 1

This option can be used to enable broadcasting on datagram sockets.

Constant Value: 32 (0x00000020)

public static final int SO_KEEPALIVE

Since: API Level 1

This option specifies whether socket implementations can send keepalive messages if no data has been sent for a longer time.

Constant Value: 8 (0x00000008)

public static final int SO_LINGER

Since: API Level 1

Number of seconds to wait when closing a socket if there is still some buffered data to be sent.

If this option is set to 0, the TCP socket is closed forcefully and the call to close returns immediately.

If this option is set to a value greater than 0, the value is interpreted as the number of seconds to wait. If all data could be sent during this time, the socket is closed normally. Otherwise the connection will be closed forcefully.

Valid values for this option are in the range 0 to 65535 inclusive. (Larger timeouts will be treated as 65535s timeouts; roughly 18 hours.)

Constant Value: 128 (0x00000080)

public static final int SO_OOBINLINE

Since: API Level 1

This boolean option specifies whether sending TCP urgent data is supported on this socket or not.

Constant Value: 4099 (0x00001003)

public static final int SO_RCVBUF

Since: API Level 1

The size in bytes of a socket's receive buffer. This must be an integer greater than 0. This is a hint to the kernel; the kernel may use a larger buffer.

For datagram sockets, packets larger than this value will be discarded.

Constant Value: 4098 (0x00001002)

public static final int SO_REUSEADDR

Since: API Level 1

This option specifies whether a reuse of a local address is allowed even if an other socket is not yet removed by the operating system. It's only available on a MulticastSocket.

Constant Value: 4 (0x00000004)

public static final int SO_SNDBUF

Since: API Level 1

The size in bytes of a socket's send buffer. This must be an integer greater than 0. This is a hint to the kernel; the kernel may use a larger buffer.

For datagram sockets, it is implementation-defined whether packets larger than this size can be sent.

Constant Value: 4097 (0x00001001)

public static final int SO_TIMEOUT

Since: API Level 1

Timeout in milliseconds for blocking accept or read/receive operations (but not write/send operations). A timeout of 0 means no timeout. Negative timeouts are not allowed.

An InterruptedIOException is thrown if this timeout expires.

Constant Value: 4102 (0x00001006)

public static final int TCP_NODELAY

Since: API Level 1

Whether data is sent immediately on this socket. As a side-effect this could lead to low packet efficiency. The socket implementation uses the Nagle's algorithm to try to reach a higher packet efficiency if this option is disabled.

Constant Value: 1 (0x00000001)

Public Methods

public abstract Object getOption (int optID)

Since: API Level 1

Gets the value for the specified socket option.

Parameters
optID the option identifier.
Returns
  • the option value.
Throws
SocketException if an error occurs reading the option value.

public abstract void setOption (int optID, Object val)

Since: API Level 1

Sets the value of the specified socket option.

Parameters
optID the option identifier.
val the value to be set for the option.
Throws
SocketException if an error occurs setting the option value.