Spec-Zone.ru › OpenJDK 25

Интерфейс 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, установка значения, отличного от 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)

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в разделе Документация Java SE, где приведены более подробные описания для разработчиков, обзоры концепций, определения терминов, обходные решения и рабочие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторские права © 1993, 2025, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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

Spec-Zone.ru

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