Класс SctpServerChannel
- Все реализуемые интерфейсы:
-
Closeable,AutoCloseable,Channel,InterruptibleChannel
public abstract class SctpServerChannel extends AbstractSelectableChannel
Объект SCTPServerChannel создаётся путём вызова метода open этого класса. Недавно созданный серверный канал SCTP открыт, но ещё не привязан. Попытка вызвать метод accept непривязанного канала приведёт к выбросу исключения NotYetBoundException. Серверный канал SCTP можно привязать, вызвав один из методов bind, определённых в этом классе.
Параметры сокета настраиваются с помощью метода setOption. Серверные сокет-каналы SCTP поддерживают следующие параметры:
Дополнительные (специфичные для реализации) параметры также могут быть поддерживаемы. Список поддерживаемых параметров получается путём вызова метода
Имя параметра Описание SCTP_INIT_MAXSTREAMSМаксимальное количество потоков, запрашиваемых локальным узлом во время инициализации ассоциации
supportedOptions. Серверные каналы SCTP безопасны для использования несколькими потоками одновременно.
- С:
- 1.7
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
protected |
Инициализирует новый экземпляр этого класса. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
abstract SctpChannel |
accept() |
Принимает ассоциацию на сокете этого канала. |
final SctpServerChannel |
bind |
Привязывает сокет канала к локальному адресу и настраивает сокет для прослушивания ассоциаций. |
abstract SctpServerChannel |
bind |
Привязывает сокет канала к локальному адресу и настраивает сокет для прослушивания ассоциаций. |
abstract SctpServerChannel |
bindAddress |
Добавляет указанный адрес к привязанным адресам для сокета канала. |
abstract Set |
getAllLocalAddresses() |
Возвращает все адреса сокетов, к которым привязан сокет этого канала. |
abstract <T> T |
getOption |
Возвращает значение параметра сокета. |
static SctpServerChannel |
open() |
Открывает серверный канал SCTP. |
abstract <T> SctpServerChannel |
setOption |
Устанавливает значение параметра сокета. |
abstract Set |
supportedOptions() |
Возвращает набор параметров сокета, поддерживаемых этим каналом. |
abstract SctpServerChannel |
unbindAddress |
Удаляет указанный адрес из привязанных адресов для сокета канала. |
final int |
validOps() |
Возвращает набор операций, определяющий поддерживаемые операции этого канала. |
Методы, унаследованные от класса java.nio.channels.spi.AbstractSelectableChannel
blockingLock, configureBlocking, implCloseChannel, implCloseSelectableChannel, implConfigureBlocking, isBlocking, isRegistered, keyFor, provider, register
Методы, унаследованные от класса java.nio.channels.SelectableChannel
register
Методы, унаследованные от класса java.nio.channels.spi.AbstractInterruptibleChannel
begin, close, end, isOpen
Подробное описание конструкторов
SctpServerChannel
protected SctpServerChannel(SelectorProvider provider)
- Параметры:
-
provider- Провайдер селектора для этого канала
Подробное описание методов
open
public static SctpServerChannel open() throws IOException
Сокет нового канала изначально не привязан; он должен быть привязан к определённому адресу с помощью одного из методов сокета bind, прежде чем можно будет принять соединения.
- Возвращает:
- Новый канал сервера SCTP
- Исключения:
-
UnsupportedOperationException- Если протокол SCTP не поддерживается -
IOException- Если произошла ошибка ввода-вывода
accept
public abstract SctpChannel accept() throws IOException
Если этот канал находится в режиме без блокировки, то этот метод сразу вернёт null если нет ожидающих соединений. В противном случае он будет блокироваться неопределённо долго, пока новое соединение не станет доступно или не произойдёт ошибка ввода-вывода.
Полученный SCTPChannel от этого метода, если таковой есть, будет в режиме блокировки независимо от режима блокировки этого канала.
Если установлен менеджер безопасности, то для каждого нового соединения этот метод проверяет, разрешены ли адрес и номер порта удалённого узла менеджером безопасности с помощью метода checkAccept.
- Возвращает:
- Канал SCTP для нового соединения или
nullесли этот канал находится в режиме без блокировки и нет доступных соединений для принятия - Исключения:
-
ClosedChannelException- Если этот канал закрыт -
AsynchronousCloseException- Если другой поток закрывает этот канал во время выполнения операции accept -
ClosedByInterruptException- Если другой поток прерывает текущий поток во время выполнения операции accept, тем самым закрывая канал и устанавливая статус прерывания текущего потока -
NotYetBoundException- Если сокет этого канала ещё не привязан -
SecurityException- Если установлен менеджер безопасности и он не разрешает доступ к удалённому узлу нового соединения -
IOException- Если произошла другая ошибка ввода-вывода
bind
public final SctpServerChannel bind(SocketAddress local) throws IOException
Этот метод работает так, как если бы его вызов был эквивалентен оценке выражения:
bind(local, 0);
- Параметры:
-
local- Локальный адрес для привязки сокета илиnullдля привязки сокета к автоматически назначенному адресу сокета - Возвращает:
- Этот канал
- Исключения:
-
ClosedChannelException- Если этот канал закрыт -
AlreadyBoundException- Если этот канал уже привязан -
UnsupportedAddressTypeException- Если тип данного адреса не поддерживается -
SecurityException- Если установлен менеджер безопасности и его методcheckListenотклоняет операцию -
IOException- Если произошла другая ошибка ввода-вывода
bind
public abstract SctpServerChannel bind(SocketAddress local, int backlog) throws IOException
Этот метод используется для установления связи между сокетом и локальным адресом. После установления связи сокет остаётся привязанным до тех пор, пока канал не будет закрыт. Эта связь необязательно должна быть с адресом local, так как она может быть удалена с помощью unbindAddress, но всегда будет по крайней мере один локальный адрес, привязанный к сокету канала после успешного выполнения этого метода.
После успешной привязки сокета канала к определённому адресу, который не назначается автоматически, к нему могут быть добавлены дополнительные адреса с помощью bindAddress или удалены с помощью unbindAddress.
Параметр backlog — максимальное количество ожидающих соединений на сокете. Его точное значение зависит от реализации. Реализация может установить максимальную длину или проигнорировать параметр. Если параметр backlog имеет значение 0, или отрицательное значение, используется значение по умолчанию, зависящее от реализации.
- Параметры:
-
local- Локальный адрес для привязки сокета илиnullдля привязки сокета к автоматически назначенному адресу сокета -
backlog- Максимальное число ожидающих соединений - Возвращает:
- Этот канал
- Исключения:
-
ClosedChannelException- Если этот канал закрыт -
AlreadyBoundException- Если этот канал уже привязан -
UnsupportedAddressTypeException- Если тип данного адреса не поддерживается -
SecurityException- Если установлен менеджер безопасности и его методcheckListenотклоняет операцию -
IOException- Если произошла другая ошибка ввода-вывода
bindAddress
public abstract SctpServerChannel bindAddress(InetAddress address) throws IOException
Данный адрес не должен быть адресом wildcard. Канал должен быть сначала привязан с помощью bind перед вызовом этого метода, в противном случае будет брошено исключение NotYetBoundException. Метод bind принимает SocketAddress в качестве аргумента, который обычно содержит номер порта и адрес. Адреса, привязанные впоследствии с помощью этого метода, являются просто адресами, так как номер порта SCTP остаётся неизменным на протяжении всего жизненного цикла канала.
Новые соединения, принятые после успешного выполнения этого метода, будут связаны с заданным адресом.
- Параметры:
-
address- Адрес для добавления в привязанные адреса для сокета - Возвращает:
- Этот канал
- Исключения:
-
ClosedChannelException- Если этот канал закрыт -
NotYetBoundException- Если этот канал ещё не привязан -
AlreadyBoundException- Если этот канал уже привязан к заданному адресу -
IllegalArgumentException- Если адрес являетсяnullили адресомwildcard -
IOException- Если произошла другая ошибка ввода-вывода
unbindAddress
public abstract SctpServerChannel unbindAddress(InetAddress address) throws IOException
Данный адрес не должен быть адресом wildcard. Канал должен быть сначала привязан с помощью bind перед вызовом этого метода, в противном случае будет брошено исключение NotYetBoundException. Если этот метод вызывается для канала, у которого address не является одним из привязанных адресов, или у которого привязан только один локальный адрес, то этот метод выбрасывает исключение IllegalUnbindException. Изначальный адрес, к которому привязан сокет канала с помощью bind, может быть удален из привязанных адресов для сокета канала.
Новые соединения, принятые после успешного выполнения этого метода, не будут связаны с заданным адресом.
- Параметры:
-
address- Адрес для удаления из привязанных адресов сокета - Возвращает:
- Этот канал
- Исключения:
-
ClosedChannelException- Если этот канал закрыт -
NotYetBoundException- Если этот канал ещё не привязан -
IllegalArgumentException- Если адрес являетсяnullили адресомwildcard -
IllegalUnbindException- Если реализация не поддерживает удаление адресов из прослушивающего сокета,addressне привязан к сокету канала, или канал имеет только один привязанный адрес -
IOException- Если произошла другая ошибка ввода-вывода
getAllLocalAddresses
public abstract Set<SocketAddress> getAllLocalAddresses() throws IOException
- Возвращает:
- Все адреса сокета, к которым привязан сокет этого канала, или пустой
Setесли сокет канала не привязан - Исключения:
-
ClosedChannelException- Если канал закрыт -
IOException- Если произошла ошибка ввода-вывода
getOption
public abstract <T> T getOption(SctpSocketOption<T> name) throws IOException
- Параметры типизации:
-
T- Тип значения параметра сокета - Параметры:
-
name- Параметр сокета - Возвращает:
- Значение параметра сокета. Значение
nullможет быть допустимым значением для некоторых параметров сокета. - Исключения:
-
UnsupportedOperationException- Если параметр сокета не поддерживается этим каналом -
ClosedChannelException- Если этот канал закрыт -
IOException- Если произошла ошибка ввода-вывода - См. также:
setOption
public abstract <T> SctpServerChannel setOption(SctpSocketOption<T> name, T value) throws IOException
- Type Parameters:
-
T- Тип значения параметра сокета - Parameters:
-
name- Параметр сокета -
value- Значение параметра сокета. Значениеnullможет быть допустимым значением для некоторых параметров сокета. - Returns:
- Этот канал
- Throws:
-
UnsupportedOperationException- Если параметр сокета не поддерживается этим каналом -
IllegalArgumentException- Если значение не является допустимым для этого параметра сокета -
ClosedChannelException- Если этот канал закрыт -
IOException- Если произошла ошибка ввода-вывода - See Also:
supportedOptions
public abstract Set<SctpSocketOption<?>> supportedOptions()
Этот метод будет продолжать возвращать набор параметров даже после закрытия канала.
- Returns:
- Набор параметров сокета, поддерживаемых этим каналом
validOps
public final int validOps()
Каналы сервера SCTP поддерживают только прием новых ассоциаций, поэтому этот метод возвращает SelectionKey.OP_ACCEPT.
- Specified by:
-
validOpsв классеSelectableChannel - Returns:
- Набор допустимых операций
© 1993, 2023, 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/21/docs/api/jdk.sctp/com/sun/nio/sctp/SctpServerChannel.html