Класс SctpStandardSocketOptions
- java.lang.Object
-
- com.sun.nio.sctp.SctpStandardSocketOptions
public class SctpStandardSocketOptions extends Object
Каналы SCTP поддерживают сокет-параметры, определенные этим классом (а также параметры, перечисленные в конкретном классе канала), и могут поддерживать дополнительные параметры сокета, специфичные для реализации.
- Since:
- 1.7
Вложенные классы
| Модификатор и тип | Класс | Описание |
|---|---|---|
static class | SctpStandardSocketOptions.InitMaxStreams | Этот класс используется для установки максимального количества входящих/исходящих потоков, используемых локальным узлом во время инициализации ассоциации. |
Поля
| Модификатор и тип | Поле | Описание |
|---|---|---|
static SctpSocketOption<Boolean> | SCTP_DISABLE_FRAGMENTS | Включает или отключает фрагментацию сообщений. |
static SctpSocketOption<Boolean> | SCTP_EXPLICIT_COMPLETE | Включает или отключает явное завершение сообщений. |
static SctpSocketOption<Integer> | SCTP_FRAGMENT_INTERLEAVE | Параметр фрагментированного чередования управляет тем, как происходит представление сообщений для получателя сообщений. |
static SctpSocketOption<SctpStandardSocketOptions.InitMaxStreams> | SCTP_INIT_MAXSTREAMS | Максимальное количество потоков, запрошенное локальным узлом во время инициализации ассоциации. |
static SctpSocketOption<Boolean> | SCTP_NODELAY | Включает или отключает алгоритм, похожий на Nagle. |
static SctpSocketOption<SocketAddress> | SCTP_PRIMARY_ADDR | Запрашивает, чтобы локальный стек SCTP использовал указанный адрес удаленного узла в качестве первичного адреса ассоциации. |
static SctpSocketOption<SocketAddress> | SCTP_SET_PEER_PRIMARY_ADDR | Запрашивает, чтобы удаленный узел отметил включенный адрес как первичный адрес ассоциации. |
static SctpSocketOption<Integer> | SO_LINGER | Задержка при закрытии, если данные присутствуют. |
static SctpSocketOption<Integer> | SO_RCVBUF | Размер буфера приема сокета. |
static SctpSocketOption<Integer> | SO_SNDBUF | Размер буфера отправки сокета. |
Методы
Методы, объявленные в классе java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait Поля
SCTP_DISABLE_FRAGMENTS
public static final SctpSocketOption<Boolean> SCTP_DISABLE_FRAGMENTS
Включает или выключает фрагментацию сообщений.
Значение этого параметра сокета — Boolean, указывающее, включен ли параметр или выключен. Если включен, фрагментация SCTP-сообщений не будет выполняться. Вместо этого, если отправляемое сообщение превышает текущий размер PMTU, сообщение НЕ будет отправлено, и пользователю будет указано об ошибке.
Поддержка этого параметра зависит от реализации.
SCTP_EXPLICIT_COMPLETE
public static final SctpSocketOption<Boolean> SCTP_EXPLICIT_COMPLETE
Включает или выключает явное завершение сообщения.
Значение этого параметра сокета — Boolean, указывающее, включен ли параметр или выключен. Когда этот параметр включён, метод send может быть вызван несколько раз для отправки сообщения. Параметр isComplete метода MessageInfo должен быть установлен в значение true только для последнего отправления, чтобы указать, что сообщение завершено. Если этот параметр выключен, каждый отдельный вызов send считается завершённым.
Значение параметра по умолчанию — false, что указывает на выключение параметра. Поддержка этого параметра зависит от реализации.
SCTP_FRAGMENT_INTERLEAVE
public static final SctpSocketOption<Integer> SCTP_FRAGMENT_INTERLEAVE
Параметр фрагментации `interleave` управляет тем, как сообщения представляются получателю. Определены три уровня фрагментации.
Два из этих уровней влияют на SctpChannel, а SctpMultiChannel затрагиваются всеми тремя уровнями.
Этот параметр принимает значение Integer. Он может быть установлен в значение 0, 1 или 2.
Установка трёх уровней обеспечивает следующие взаимодействия с получателем:
level 0 — предотвращает переплетение сообщений. Это означает, что при начале частичной доставки других сообщений не будет приниматься, кроме частично доставляемого сообщения. Если придёт другое сообщение на другом потоке (или ассоциации), которое можно доставить, оно будет заблокировано, ожидая, пока пользователь прочитает всё частично доставленное сообщение.
level 1 — разрешает переплетение сообщений, которые поступают из разных ассоциаций. Для SctpChannel, уровни 0 и 1 имеют одинаковое значение, так как SctpChannel всегда получает сообщения из одной ассоциации. Обратите внимание, что установка
SctpMultiChannel на этот уровень может привести к нескольким частичным доставкам из разных ассоциаций, но для любой данной ассоциации будет доставлено только одно сообщение, пока не будут доставлены все части сообщения. Это означает, что одно большое сообщение, читаемое с идентификатором ассоциации "X", будет блокировать доставку других сообщений из ассоциации "X".
level 2 — разрешает полное переплетение сообщений. На этом уровне отправитель должен внимательно следить не только за Association, но и обращать внимание на номер потока. При включенном этом параметре частично доставленное сообщение может начать доставляться для ассоциации "X" потока "Y", а следующее последующее получение может вернуть сообщение из ассоциации "X" потока "Z". Обратите внимание, что другие сообщения не будут доставлены для ассоциации "X" потока "Y", пока не будет прочитано всё частично доставленное сообщение потока "Y". Обратите внимание, что этот параметр затрагивает оба типа каналов. Также обратите внимание, что для SctpMultiChannel не только может быть доставлено сообщение из другого потока той же ассоциации при следующем получении, но и сообщение из другой ассоциации может быть доставлено при следующем получении.
Поддержка этого параметра зависит от реализации.
SCTP_INIT_MAXSTREAMS
public static final SctpSocketOption<SctpStandardSocketOptions.InitMaxStreams> SCTP_INIT_MAXSTREAMS
Максимальное количество потоков, запрошенных локальным узлом при инициализации ассоциации.
Значение этого параметра сокета — InitMaxStreams, представляющее максимальное количество входящих и исходящих потоков, которые ассоциация на канале готова поддерживать.
Для SctpChannel этот параметр может быть использован только для изменения количества входящих/исходящих потоков перед подключением.
Для SctpMultiChannel этот параметр определяет максимальное количество входящих/исходящих потоков, которые новые ассоциации, созданные на канале, будут готовы поддерживать.
Для SctpServerChannel этот параметр определяет максимальное количество входящих/исходящих потоков, с которыми сокеты, принимающие подключения, будут согласовываться со своим подключённым партнером.
Во всех случаях значение, установленное этим параметром, используется при согласовании новых ассоциаций, созданных на сокете канала, а фактическое максимальное количество входящих/исходящих потоков, согласованных с партнёром, может быть получено из соответствующей Association. Значение Association может быть получено из COMM_UP AssociationChangeNotification, принадлежащей данной ассоциации.
Это значение ограничено фактической реализацией. Другими словами, пользователь может поддерживать больше потоков, чем операционная система. В таком случае, ограничение операционной системы может переопределить значение, запрошенное пользователем. Значение по умолчанию 0 указывает на использование значения по умолчанию для конечной точки.
SCTP_NODELAY
public static final SctpSocketOption<Boolean> SCTP_NODELAY
Включает или выключает алгоритм, аналогичный Nagle's algorithm.
Значение этого параметра сокета — Boolean, указывающее, включен ли параметр или выключен. SCTP использует алгоритм, подобный Nagle's algorithm, для объединения коротких сегментов и повышения эффективности сети.
SCTP_PRIMARY_ADDR
public static final SctpSocketOption<SocketAddress> SCTP_PRIMARY_ADDR
Запрашивает, чтобы локальный стек SCTP использовал заданный адрес партнёра в качестве основного для ассоциации.
Значение этого параметра сокета — SocketAddress, представляющее адрес партнёра, который локальный стек SCTP должен использовать в качестве основного для ассоциации. Адрес должен быть одним из адресов партнёра ассоциации.
Один SctpMultiChannel может управлять более чем одной ассоциацией, параметр ассоциации должен быть указан при установке или получении этого параметра.
Так как SctpChannel управляет только одной ассоциацией, параметр ассоциации не требуется, и этот параметр можно установить или запросить напрямую.
SCTP_SET_PEER_PRIMARY_ADDR
public static final SctpSocketOption<SocketAddress> SCTP_SET_PEER_PRIMARY_ADDR
Запрашивает, чтобы партнёр отметил указанный адрес как основной для ассоциации.
Значение этого параметра сокета — SocketAddress, представляющее локальный адрес, который партнёр должен использовать в качестве основного. Указанный адрес должен быть одним из локально привязанных адресов ассоциации.
Один SctpMultiChannel может управлять более чем одной ассоциацией, параметр ассоциации должен быть указан при установке или получении этого параметра.
Так как SctpChannel управляет только одной ассоциацией, параметр ассоциации не требуется, и этот параметр можно запросить напрямую.
Обратите внимание, что это параметр только для записи и не может быть получен с помощью
getOption. Поддержка этого параметра зависит от реализации.
SO_SNDBUF
public static final SctpSocketOption<Integer> SO_SNDBUF
Размер буфера отправки сокета.
Значение этого параметра сокета — Integer, представляющее размер буфера отправки сокета в байтах. Буфер отправки сокета — это буфер вывода, используемый реализацией сетевого стека. Его может потребоваться увеличить для высокообъёмных соединений. Значение параметра сокета является подсказкой для реализации для определения размера буфера, и фактический размер может отличаться. Параметр сокета можно запросить, чтобы получить фактический размер.
Для SctpChannel, это управляет объёмом данных, которые могут ожидать в внутренних буферах SCTP стека для отправки. Таким образом, этот параметр ограничивает максимальный объём данных, который может быть отправлен в одном вызове send.
Для SctpMultiChannel, эффект такой же, как и для
SctpChannel, за исключением того, что он применяется ко всем ассоциациям. Параметр применяется к размеру окна каждой ассоциации по отдельности.
Реализация позволяет устанавливать этот параметр сокета до привязки или подключения сокета. Возможность изменения буфера отправки сокета после привязки сокета зависит от системы.
SO_RCVBUF
public static final SctpSocketOption<Integer> SO_RCVBUF
Размер буфера приема сокета.
Значение этого параметра сокета — Integer, представляющее размер буфера приема сокета в байтах. Буфер приема сокета — это буфер ввода, используемый реализацией сетевого стека. Его может потребоваться увеличить для высокообъёмных соединений или уменьшить для ограничения возможной очереди входящих данных. Значение параметра сокета является подсказкой для реализации для определения размера буфера, и фактический размер может отличаться.
Для SctpChannel, это управляет размером окна приема.
Для SctpMultiChannel, значение зависит от реализации. Оно может управлять буфером приема для каждой ассоциации, привязанной к дескриптору сокета, или может управлять буфером приема для всего сокета.
Реализация позволяет устанавливать этот параметр сокета до привязки или подключения сокета. Возможность изменения буфера приема сокета после привязки сокета зависит от системы.
SO_LINGER
public static final SctpSocketOption<Integer> SO_LINGER
Задерживаться при закрытии, если имеются данные.
Значение этого параметра сокета — Integer, контролирующее действие, выполняемое при очереди незасланных данных в сокете и вызове метода закрытия сокета. Если значение параметра сокета равно нулю или больше, оно представляет собой значение таймаута в секундах, известное как интервал ожидания. Интервал ожидания — это таймаут для метода close, чтобы заблокироваться, пока операционная система пытается передать незасланные данные или определит, что не может передать эти данные. Если значение параметра сокета меньше нуля, параметр отключен. В этом случае метод close не ждет, пока незасланные данные будут переданы; если возможно, операционная система передаст все незасланные данные перед закрытием соединения.
Этот параметр сокета предназначен для использования с сокетами, настроенными в режиме blocking только. Поведение метода close при включении этого параметра в неблокирующем сокете не определено.
Начальное значение этого параметра сокета — отрицательное значение, что означает отключение параметра. Параметр может быть включен или интервал ожидания изменён в любое время. Максимальное значение интервала ожидания зависит от системы. Установка интервала ожидания в значение, большее его максимального значения, приводит к установке интервала ожидания в его максимальное значение.
© 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/jdk.sctp/com/sun/nio/sctp/SctpStandardSocketOptions.html