Класс StandardSocketOptions

public final class StandardSocketOptions
extends Object

Определяет стандартные параметры сокета.

Имя каждого параметра сокета, определенного этим классом, является его именем поля.

В этом выпуске параметры сокета, определенные здесь, используются каналами network в пакете channels.

Since:
1.7

Поля

Модификатор и тип Поле Описание
static SocketOption<NetworkInterface> IP_MULTICAST_IF

Сетевой интерфейс для мультивещательных датаграмм Internet Protocol (IP).

static SocketOption<Boolean> IP_MULTICAST_LOOP

Обратная петля для мультивещательных датаграмм Internet Protocol (IP).

static SocketOption<Integer> IP_MULTICAST_TTL

Время жизни (time-to-live) для мультивещательных датаграмм Internet Protocol (IP).

static SocketOption<Integer> IP_TOS

Байт типа обслуживания (ToS) в заголовке Internet Protocol (IP).

static SocketOption<Boolean> SO_BROADCAST

Разрешить передачу датаграмм вещания.

static SocketOption<Boolean> SO_KEEPALIVE

Поддерживать соединение активным.

static SocketOption<Integer> SO_LINGER

Удерживать соединение при закрытии, если есть данные.

static SocketOption<Integer> SO_RCVBUF

Размер буфера приема сокета.

static SocketOption<Boolean> SO_REUSEADDR

Использовать адрес повторно.

static SocketOption<Boolean> SO_REUSEPORT

Использовать порт повторно.

static SocketOption<Integer> SO_SNDBUF

Размер буфера отправки сокета.

static SocketOption<Boolean> TCP_NODELAY

Отключить алгоритм Nagle.

Методы

Методы, объявленные в классе java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Поля

SO_BROADCAST

public static final SocketOption<Boolean> SO_BROADCAST

Разрешить передачу широковещательных дейтаграмм.

Значение этого параметра сокета — Boolean, которое указывает, включен ли параметр или выключен. Параметр специфичен для сокетов, ориентированных на дейтаграммы, которые отправляют данные на IPv4 широковещательные адреса. Когда параметр сокета включён, сокет можно использовать для отправки широковещательных дейтаграмм.

Начальное значение этого параметра сокета — FALSE. Параметр сокета можно включать или выключать в любое время. Некоторые операционные системы могут потребовать, чтобы виртуальная машина Java запускалась с привилегиями, специфичными для реализации, для включения этого параметра или отправки широковещательных дейтаграмм.

См. также:
RFC 929: Широковещательные дейтаграммы в Интернете, DatagramSocket.setBroadcast(boolean)

SO_KEEPALIVE

public static final SocketOption<Boolean> SO_KEEPALIVE

Поддерживать соединение активным.

Значение этого параметра сокета — Boolean, которое указывает, включен ли параметр или выключен. Когда параметр SO_KEEPALIVE включён, операционная система может использовать механизм keep-alive для периодического зондирования другого конца соединения, когда соединение в противном случае бездействует. Точное семантическое значение механизма keep-alive зависит от системы и поэтому не определено.

Начальное значение этого параметра сокета — FALSE. Параметр сокета можно включать или выключать в любое время.

См. также:
RFC 1122 Требования к хостам в Интернете — Уровни коммуникаций, Socket.setKeepAlive(boolean)

SO_SNDBUF

public static final SocketOption<Integer> SO_SNDBUF

Размер буфера отправки сокета.

Значение этого параметра сокета — Integer, представляющее размер буфера отправки сокета в байтах. Буфер отправки сокета — это буфер вывода, используемый реализацией сетевого интерфейса. Его может потребоваться увеличить для высокообъёмных соединений. Значение параметра сокета — указание реализации для размера буфера, и фактический размер может отличаться. Параметр сокета можно запросить, чтобы получить фактический размер.

Для сокетов, ориентированных на дейтаграммы, размер буфера отправки может ограничивать размер дейтаграмм, которые могут быть отправлены сокетом. Отправка дейтаграмм большего размера, чем размер буфера, или их отбрасывание зависит от системы.

Начальный/по умолчанию размер буфера отправки сокета и диапазон допустимых значений зависят от системы, хотя отрицательный размер недопустим. Попытка установить буфер отправки сокета больше, чем его максимальный размер, приводит к установке его максимального размера.

Реализация позволяет установить этот параметр сокета до привязки или подключения сокета. Возможность изменения буфера отправки сокета после привязки сокета зависит от системы.

См. также:
Socket.setSendBufferSize(int)

SO_RCVBUF

public static final SocketOption<Integer> SO_RCVBUF

Размер буфера приёма сокета.

Значение этого параметра сокета — Integer, представляющее размер буфера приёма сокета в байтах. Буфер приёма сокета — это буфер ввода, используемый реализацией сетевого интерфейса. Его может потребоваться увеличить для высокообъёмных соединений или уменьшить для ограничения возможного накопления входящих данных. Значение параметра сокета — указание реализации для размера буфера, и фактический размер может отличаться.

Для сокетов, ориентированных на дейтаграммы, размер буфера приёма может ограничивать размер дейтаграмм, которые могут быть приняты. Приём дейтаграмм большего размера, чем размер буфера, зависит от системы. Увеличение буфера приёма сокета может быть важным для случаев, когда дейтаграммы приходят импульсами быстрее, чем могут быть обработаны.

В случае сокетов, ориентированных на поток, и протокола TCP/IP, размер буфера приёма сокета может использоваться при рекламе размера TCP-окна удалённому узлу.

Начальный/по умолчанию размер буфера приёма сокета и диапазон допустимых значений зависят от системы, хотя отрицательный размер недопустим. Попытка установить буфер приёма сокета больше, чем его максимальный размер, приводит к установке его максимального размера.

Реализация позволяет установить этот параметр сокета до привязки или подключения сокета. Возможность изменения буфера приёма сокета после привязки сокета зависит от системы.

См. также:
RFC 1323: Расширения TCP для высокой производительности, Socket.setReceiveBufferSize(int), ServerSocket.setReceiveBufferSize(int)

SO_REUSEADDR

public static final SocketOption<Boolean> SO_REUSEADDR

Использовать адрес повторно.

Значение этого параметра сокета — Boolean, которое указывает, включён ли параметр или выключен. Точное семантическое значение этого параметра сокета зависит от типа сокета и системы.

В случае сокетов, ориентированных на поток, этот параметр сокета обычно определяет, может ли сокет быть привязан к адресу сокета, когда предыдущее соединение, связанное с этим адресом сокета, находится в состоянии TIME_WAIT. В реализациях, где семантика отличается, и включение параметра сокета не является обязательным для привязки сокета, когда предыдущее соединение находится в этом состоянии, реализация может игнорировать этот параметр.

Для сокетов, ориентированных на дейтаграммы, этот параметр используется для разрешения привязки нескольких программ к одному и тому же адресу. Этот параметр должен быть включён, когда сокет используется для интернет-протокола (IP) мультикастинга.

Реализация позволяет установить этот параметр сокета до привязки или подключения сокета. Изменение значения этого параметра сокета после привязки сокета не влияет на него. Значение по умолчанию для этого параметра сокета зависит от системы.

См. также:
RFC 793: Протокол управления передачей, ServerSocket.setReuseAddress(boolean)

SO_REUSEPORT

public static final SocketOption<Boolean> SO_REUSEPORT

Использовать порт повторно.

Значение этого параметра сокета — Boolean, которое указывает, включен ли параметр или выключен. Точное семантическое значение этого параметра сокета зависит от типа сокета и системы.

В случае сокетов, ориентированных на поток, этот параметр обычно позволяет привязывать несколько слушающих сокетов к одному и тому же адресу и порту.

Для сокетов, ориентированных на дейтаграммы, этот параметр обычно позволяет привязывать несколько UDP-сокетов к одному и тому же адресу и порту.

Реализация позволяет установить этот параметр сокета до привязки или подключения сокета. Изменение значения этого параметра сокета после привязки сокета не влияет на него.

С версии:
9

SO_LINGER

public static final SocketOption<Integer> SO_LINGER

Задержаться при закрытии, если есть данные.

Значение этого параметра сокета — Integer, которое управляет действиями, выполняемыми при наличии неоправленных данных в очереди сокета, и вызове метода закрытия сокета. Если значение параметра сокета равно нулю или больше, то это значение таймаута в секундах, известное как интервал ожидания. Интервал ожидания — это таймаут для метода close, который блокируется, в то время как операционная система пытается передать неоправленные данные или решает, что не способна передать эти данные. Если значение параметра сокета меньше нуля, то параметр отключён. В этом случае метод close не ожидает завершения передачи неоправленных данных; если возможно, операционная система передаст любые неоправленные данные до закрытия соединения.

Этот параметр сокета предназначен для использования с сокетами, сконфигурированными в режиме blocking только. Поведение метода close при включении этого параметра для неблокирующего сокета не определено.

Начальное значение этого параметра сокета — отрицательное значение, означающее, что параметр отключен. Параметр может быть включен, или интервал ожидания изменён, в любое время. Максимальное значение интервала ожидания зависит от системы. Установка интервала ожидания на значение больше его максимального значения приводит к установке интервала ожидания на его максимальное значение.

См. также:
Socket.setSoLinger(boolean, int)

IP_TOS

public static final SocketOption<Integer> IP_TOS

Байт типа обслуживания (ToS) в заголовке Интернет-протокола (IP).

Значение этого параметра сокета — Integer, представляющее значение байта ToS в пакетах IP, отправленных сокетами на сокет IPv4. Интерпретация байта ToS зависит от сети и не определена этим классом. Дополнительную информацию о байте ToS можно найти в RFC 1349 и RFC 2474. Значение параметра сокета — указание. Реализация может игнорировать это значение или определённые значения.

Начальное/по умолчанию значение поля TOS в байте ToS зависит от реализации, но обычно составляет 0. Для сокетов, ориентированных на дейтаграммы, параметр может быть сконфигурирован в любое время после привязки сокета. Новое значение байта используется при отправке последующих дейтаграмм. Возможность запроса или изменения этого параметра до привязки сокета зависит от системы.

Поведение этого параметра сокета для сокета, ориентированного на поток, или сокета IPv6, не определено в данном выпуске.

См. также:
DatagramSocket.setTrafficClass(int)

IP_MULTICAST_IF

public static final SocketOption<NetworkInterface> IP_MULTICAST_IF

Сетевой интерфейс для дейтаграмм интернет-протокола (IP) мультикаста.

Значение этого параметра сокета — NetworkInterface, представляющее исходящий интерфейс для дейтаграмм мультикаста, отправленных сокетом, ориентированным на дейтаграммы. Для сокетов IPv6 поведение зависит от системы, если установка этого параметра также устанавливает исходящий интерфейс для дейтаграмм мультикаста, отправленных на IPv4-адреса.

Начальное/по умолчанию значение этого параметра сокета может быть null, чтобы указать, что исходящий интерфейс будет выбран операционной системой, обычно на основе таблиц маршрутизации сети. Реализация позволяет устанавливать этот параметр сокета после привязки сокета. Возможность запроса или изменения параметра сокета до привязки сокета зависит от системы.

См. также:
MulticastChannel, MulticastSocket.setInterface(java.net.InetAddress)

IP_MULTICAST_TTL

public static final SocketOption<Integer> IP_MULTICAST_TTL

Время жизни (TTL) для дейтаграмм интернет-протокола (IP) в режиме multicast.

Значение этого параметра сокета — целое число в диапазоне 0 <= value <= 255. Оно используется для управления областью действия дейтаграмм multicast, отправляемых сокетом ориентированного на дейтаграммы типа. В случае сокета IPv4 параметр является временем жизни (TTL) для дейтаграмм multicast, отправляемых сокетом. Дейтаграммы с TTL равным нулю не передаются в сеть, но могут быть доставлены локально. В случае сокета IPv6 параметр представляет собой предельное количество переходов (hop limit), которое может пройти дейтаграмма перед истечением срока действия в сети. Для IPv6-сокетов зависит от системы, устанавливает ли параметр также время жизни для дейтаграмм multicast, отправленных на IPv4-адреса.

Начальное/стандартное значение параметра времени жизни обычно равно 1. Реализация позволяет установить этот параметр сокета после привязки сокета. Возможность запроса или изменения параметра сокета до привязки зависит от системы.

См. также:
MulticastChannel, MulticastSocket.setTimeToLive(int)

IP_MULTICAST_LOOP

public static final SocketOption<Boolean> IP_MULTICAST_LOOP

Обратная связь для дейтаграмм интернет-протокола (IP) в режиме multicast.

Значение этого параметра сокета — логическое значение, которое управляет обратной связью (loopback) для дейтаграмм multicast. Значение параметра сокета определяет, включена или отключена обратная связь.

Точное значение этого параметра сокета зависит от системы. В частности, от системы зависит, применяется ли обратная связь к дейтаграммам multicast, отправленным из сокета, или полученным сокетом. Для сокетов IPv6 зависит от системы, применяется ли этот параметр также к дейтаграммам multicast, отправленным на IPv4-адреса.

Начальное/стандартное значение этого параметра сокета — TRUE. Реализация позволяет установить этот параметр сокета после привязки сокета. Возможность запроса или изменения параметра сокета до привязки зависит от системы.

См. также:
MulticastChannel, MulticastSocket.setLoopbackMode(boolean)

TCP_NODELAY

public static final SocketOption<Boolean> TCP_NODELAY

Отключение алгоритма Nagle.

Значение этого параметра сокета — логическое значение, определяющее, включён ли этот параметр. Параметр сокета специфичен для сокетов ориентированных на поток, использующих протокол TCP/IP. TCP/IP использует алгоритм, известный как алгоритм Nagle, для объединения коротких сегментов и повышения эффективности сети.

Значение по умолчанию для этого параметра сокета — FALSE. Параметр сокета следует включать только в тех случаях, когда известно, что объединение сегментов негативно сказывается на производительности. Параметр сокета может быть включён в любое время. Другими словами, алгоритм Nagle можно отключить. После включения параметра, зависит от системы, можно ли его отключить позже. Если это невозможно, вызов метода setOption для отключения параметра не оказывает никакого влияния.

См. также:
RFC 1122: Требования к хостам интернета — Сетевые уровни, Socket.setTcpNoDelay(boolean)

© 1993, 2020, 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/11/docs/api/java.base/java/net/StandardSocketOptions.html

Spec-Zone .ru
спецификации, руководства, описания, API