Spec-Zone.ru › OpenJDK 24

Интерфейс SocketOptions

Все известные классы-реализации:
DatagramSocketImpl, SocketImpl
public interface SocketOptions
Интерфейс методов для получения/установки параметров сокета. Данный интерфейс реализован классами SocketImpl и DatagramSocketImpl. Подклассы этих двух классов должны переопределять методы getOption(int) и setOption(int, Object) этого интерфейса, чтобы поддерживать собственные параметры.

Методы и константы, определённые в этом интерфейсе, предназначены только для реализации. Если вы не наследуете от SocketImpl или DatagramSocketImpl, то вы не будете использовать их напрямую. Существуют безопасные по типу методы для получения/установки каждого из этих параметров в Socket, ServerSocket, DatagramSocket и MulticastSocket.

С момента:
1.1

Краткое описание полей

Модификатор и тип Поле Описание
static final int IP_MULTICAST_IF
См. StandardSocketOptions.IP_MULTICAST_IF для описания этого параметра сокета.
static final int IP_MULTICAST_IF2
Этот параметр используется для установки и получения интерфейса отправки мультикаст-пакетов.
static final int IP_MULTICAST_LOOP
См. StandardSocketOptions.IP_MULTICAST_LOOP для описания этого параметра сокета.
static final int IP_TOS
См. StandardSocketOptions.IP_TOS для описания этого параметра сокета.
static final int SO_BINDADDR
Получение привязки локального адреса сокета.
static final int SO_BROADCAST
См. StandardSocketOptions.SO_BROADCAST для описания этого параметра сокета.
static final int SO_KEEPALIVE
См. StandardSocketOptions.SO_KEEPALIVE для описания этого параметра сокета.
static final int SO_LINGER
См. StandardSocketOptions.SO_LINGER для описания этого параметра сокета.
static final int SO_OOBINLINE
При установке этого параметра любые TCP данные срочности, полученные по сокету, будут получены через входной поток сокета.
static final int SO_RCVBUF
См. StandardSocketOptions.SO_RCVBUF для описания этого параметра сокета.
static final int SO_REUSEADDR
См. StandardSocketOptions.SO_REUSEADDR для описания этого параметра сокета.
static final int SO_REUSEPORT
См. StandardSocketOptions.SO_REUSEPORT для описания этого параметра сокета.
static final int SO_SNDBUF
См. StandardSocketOptions.SO_SNDBUF для описания этого параметра сокета.
static final int SO_TIMEOUT
Этот параметр используется для установки и получения значения таймаута для блокирующих Socket операций: ServerSocket.accept() Socket InputStream.read() DatagramSocket.receive()
static final int TCP_NODELAY
См. StandardSocketOptions.TCP_NODELAY для описания этого параметра сокета.

Краткое описание методов

Модификатор и тип Метод Описание
Object getOption(int optID)
Получение значения параметра.
void setOption(int optID, Object value)
Включение/выключение параметра, указанного в optID.

Подробное описание полей

TCP_NODELAY

@Native static final int TCP_NODELAY
См. StandardSocketOptions.TCP_NODELAY для описания этого параметра сокета.
См. также:
  • Socket.setTcpNoDelay(boolean)
  • Socket.getTcpNoDelay()
  • Значения константных полей

SO_BINDADDR

@Native static final int SO_BINDADDR
Получение привязки локального адреса сокета. Этот параметр нельзя установить, только получить. По умолчанию локальный адрес сокета — INADDR_ANY, что означает любой локальный адрес на хосте с несколькими интерфейсами. Хост с несколькими интерфейсами может использовать этот параметр для приема подключений только к одному из своих адресов (в случае с ServerSocket или DatagramSocket), или для указания адреса возврата для удаленного узла (в случае с Socket или DatagramSocket). Тип значения этого параметра — InetAddress.
См. также:
  • Socket.getLocalAddress()
  • DatagramSocket.getLocalAddress()
  • Значения константных полей

SO_REUSEADDR

@Native static final int SO_REUSEADDR
См. StandardSocketOptions.SO_REUSEADDR для описания этого параметра сокета.
См. также:
  • Значения константных полей

SO_REUSEPORT

@Native static final int SO_REUSEPORT
См. StandardSocketOptions.SO_REUSEPORT для описания этого параметра сокета.
С:
9
См. также:
  • Значения константных полей

SO_BROADCAST

@Native static final int SO_BROADCAST
См. StandardSocketOptions.SO_BROADCAST для описания этого параметра сокета.
С:
1.4
См. также:
  • Значения константных полей

IP_MULTICAST_IF

@Native static final int IP_MULTICAST_IF
См. StandardSocketOptions.IP_MULTICAST_IF для описания этого параметра сокета.
См. также:
  • MulticastSocket.setInterface(InetAddress)
  • MulticastSocket.getInterface()
  • Значения константных полей

IP_MULTICAST_IF2

@Native static final int IP_MULTICAST_IF2
Этот параметр используется для установки и получения выходного интерфейса, на котором отправляются мультипакеты. Полезно на хостах с несколькими сетевыми интерфейсами, когда приложения хотят использовать интерфейс, отличный от системного по умолчанию. Этот параметр поддерживает установку выходных интерфейсов с адресами IPv4 и IPv6.
С:
1.4
См. также:
  • MulticastSocket.setNetworkInterface(NetworkInterface)
  • MulticastSocket.getNetworkInterface()
  • Значения константных полей

IP_MULTICAST_LOOP

@Native static final int IP_MULTICAST_LOOP
См. StandardSocketOptions.IP_MULTICAST_LOOP для описания этого параметра сокета.
С:
1.4
См. также:
  • Значения константных полей

IP_TOS

@Native static final int IP_TOS
См. StandardSocketOptions.IP_TOS для описания этого параметра сокета.
С:
1.4
См. также:
  • Значения константных полей

SO_LINGER

@Native static final int SO_LINGER
См. StandardSocketOptions.SO_LINGER для описания этого параметра сокета.

Установите значение в Boolean.FALSE или целое число меньше 0 с помощью setOption(int, Object) для отключения этого параметра. Целое число больше или равно 0 включит параметр и будет представлять интервал ожидания.

Если этот параметр включен, то getOption(int) вернёт целое число, представляющее интервал ожидания, иначе возвращается Boolean.FALSE.

См. также:
  • Socket.setSoLinger(boolean, int)
  • Socket.getSoLinger()
  • Значения константных полей

SO_TIMEOUT

@Native static final int SO_TIMEOUT
Этот параметр используется для установки и получения значения таймаута для блокирующих Socket операций:
  • ServerSocket.accept()
  • Socket InputStream.read()
  • DatagramSocket.receive()

Этот параметр должен быть установлен перед входом в блокирующую операцию, чтобы он вступил в силу. Если таймаут истекает и операция по-прежнему блокируется, то поднимается InterruptedIOException. Socket не закрывается в таких случаях.

См. также:
  • Socket.setSoTimeout(int)
  • ServerSocket.setSoTimeout(int)
  • DatagramSocket.setSoTimeout(int)
  • Значения константных полей

SO_SNDBUF

@Native static final int SO_SNDBUF
См. StandardSocketOptions.SO_SNDBUF для описания этого параметра сокета.
См. также:
  • Socket.setSendBufferSize(int)
  • Socket.getSendBufferSize()
  • DatagramSocket.setSendBufferSize(int)
  • DatagramSocket.getSendBufferSize()
  • Значения константных полей

SO_RCVBUF

@Native static final int SO_RCVBUF
См. StandardSocketOptions.SO_RCVBUF для описания этого параметра сокета.
См. также:
  • Socket.setReceiveBufferSize(int)
  • Socket.getReceiveBufferSize()
  • DatagramSocket.setReceiveBufferSize(int)
  • DatagramSocket.getReceiveBufferSize()
  • Значения константных полей

SO_KEEPALIVE

@Native static final int SO_KEEPALIVE
См. StandardSocketOptions.SO_KEEPALIVE для описания этого параметра сокета.
См. также:
  • Socket.setKeepAlive(boolean)
  • Socket.getKeepAlive()
  • Значения константных полей

SO_OOBINLINE

@Native static final int SO_OOBINLINE
Если этот параметр установлен, все данные TCP с высоким приоритетом, полученные по сокету, будут получены через входной поток сокета. При отключенном параметре (по умолчанию) данные с высоким приоритетом отбрасываются без ошибок.
См. также:
  • Socket.setOOBInline(boolean)
  • Socket.getOOBInline()
  • Значения константных полей

Подробности методов

setOption

void setOption(int optID, Object value) throws SocketException
Включает/выключает параметр, заданный optID. Если необходимо включить параметр, и он требует специфического для параметра "значения", то оно передается в value. Фактический тип value зависит от параметра, и передача несоответствующего типа является ошибкой:
 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, неявно включает его.
Параметры:
optID — идентификатор параметра
value — параметр сокета
Исключения:
SocketException — если параметр не распознан, сокет закрыт или произошла ошибка низкого уровня
См. также:
  • getOption(int)

getOption

Object getOption(int optID) throws SocketException
Получение значения параметра. Двоичные параметры возвращают Boolean.TRUE, если включены, и Boolean.FALSE, если отключены, например:
SocketImpl s;
...
Boolean noDelay = (Boolean)(s.getOption(TCP_NODELAY));
if (noDelay.booleanValue()) {
    // true if TCP_NODELAY is enabled...
...
}

Для параметров, принимающих определённый тип в качестве параметра, этот метод вернёт значение параметра, иначе вернёт 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 — int, идентифицирующий параметр для извлечения
Возвращает:
значение параметра
Исключения:
SocketException — если сокет закрыт или optID неизвестен на протокольном стеке
См. также:
  • setOption(int, java.lang.Object)

© 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://download.java.net/java/early_access/jdk24/docs/api/java.base/java/net/SocketOptions.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API