Spec-Zone.ru › OpenJDK 17

Класс SctpChannel

java.lang.Object
java.nio.channels.spi.AbstractInterruptibleChannel
java.nio.channels.SelectableChannel
java.nio.channels.spi.AbstractSelectableChannel
com.sun.nio.sctp.SctpChannel
Все реализованные интерфейсы:
Closeable, AutoCloseable, Channel, InterruptibleChannel
public abstract class SctpChannel extends AbstractSelectableChannel
Выбираемый канал для сокетов SCTP, ориентированных на сообщения и подключенные.

Канал SCTP может контролировать только одно ассоциацию SCTP. SCTPChannel создается путем вызова одного из методов open этого класса. Новый канал открыт, но еще не подключен, то есть нет установленного соединения с удаленным узлом. Попытка выполнить операцию ввода-вывода на отключенном канале приведет к возбуждению исключения NotYetConnectedException. Соединение может быть установлено путем подключения канала с помощью одного из его методов connect. После подключения канал остается подключенным до его закрытия. Подключение канала можно определить, вызвав getRemoteAddresses.

Каналы SCTP поддерживают неблокирующее подключение: канал может быть создан, и процесс установления связи с удаленным сокетом может быть инициирован с помощью метода connect для последующего завершения методом finishConnect. Выполнение операции подключения можно определить, вызвав метод isConnectionPending.

Параметры сокета настраиваются с помощью метода setOption. Канал SCTP поддерживает следующие параметры:

Параметры сокета
Имя параметра Описание
SCTP_DISABLE_FRAGMENTS Включает или отключает фрагментацию сообщений
SCTP_EXPLICIT_COMPLETE Включает или отключает явное завершение сообщения
SCTP_FRAGMENT_INTERLEAVE Управляет представлением сообщений для получателя сообщений
SCTP_INIT_MAXSTREAMS Максимальное количество потоков, запрашиваемых локальным узлом во время инициализации ассоциации
SCTP_NODELAY Включает или отключает алгоритм типа Nagle
SCTP_PRIMARY_ADDR Запрашивает, чтобы локальный SCTP-стек использовал указанный адрес узла как первичный для ассоциации
SCTP_SET_PEER_PRIMARY_ADDR Запрашивает, чтобы узел-партнер пометил указанный адрес как первичный для ассоциации
SO_SNDBUF Размер буфера отправки сокета
SO_RCVBUF Размер буфера приема сокета
SO_LINGER Задержка при закрытии, если присутствуют данные (только при работе в блокирующем режиме)
Дополнительные (специфичные для реализации) параметры также могут быть поддерживаемы. Список поддерживаемых параметров можно получить, вызвав метод supportedOptions.

Каналы SCTP безопасны для использования несколькими потоками. Они поддерживают одновременное чтение и запись, хотя одновременно может быть только один поток чтения и только один поток записи. Методы connect и finishConnect взаимоблокированы друг с другом, и попытка инициировать операцию отправки или получения во время выполнения одного из этих методов будет заблокирована до завершения этого вызова.

С:
1.7

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

SctpChannel(SelectorProvider provider)
Модификатор Конструктор Описание
protected
Инициализирует новый экземпляр этого класса.

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

Модификатор и тип Метод Описание
abstract Association association()
Возвращает ассоциацию в сокете этого канала.
abstract SctpChannel bind(SocketAddress local)
Привязывает сокет канала к локальному адресу.
abstract SctpChannel bindAddress(InetAddress address)
Добавляет указанный адрес к привязанным адресам для сокета канала.
abstract boolean connect(SocketAddress remote)
Подключает сокет этого канала.
abstract boolean connect(SocketAddress remote, int maxOutStreams, int maxInStreams)
Подключает сокет этого канала.
abstract boolean finishConnect()
Завершает процесс подключения канала SCTP.
abstract Set<SocketAddress> getAllLocalAddresses()
Возвращает все адреса сокетов, к которым привязан сокет этого канала.
abstract <T> T getOption(SctpSocketOption<T> name)
Возвращает значение параметра сокета.
abstract Set<SocketAddress> getRemoteAddresses()
Возвращает все удаленные адреса, к которым подключен сокет этого канала.
abstract boolean isConnectionPending()
Указывает, выполняется ли операция подключения на этом канале.
static SctpChannel open()
Открывает канал SCTP.
static SctpChannel open(SocketAddress remote, int maxOutStreams, int maxInStreams)
Открывает канал SCTP и подключает его к удаленному адресу.
abstract <T> MessageInfo receive(ByteBuffer dst, T attachment, NotificationHandler<T> handler)
Принимает сообщение в предоставленный буфер и/или обрабатывает уведомление.
abstract int send(ByteBuffer src, MessageInfo messageInfo)
Отправляет сообщение через этот канал.
abstract <T> SctpChannel setOption(SctpSocketOption<T> name, T value)
Устанавливает значение параметра сокета.
abstract SctpChannel shutdown()
Отключает соединение без закрытия канала.
abstract Set<SctpSocketOption<?>> supportedOptions()
Возвращает набор параметров сокета, поддерживаемых этим каналом.
abstract SctpChannel unbindAddress(InetAddress address)
Удаляет указанный адрес из привязанных адресов для сокета канала.
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

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

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

Методы, объявленные в интерфейсе java.nio.channels.Channel

isOpen

Подробное описание конструкторов

SctpChannel

protected SctpChannel(SelectorProvider provider)
Инициализирует новый экземпляр этого класса.
Параметры:
provider - Поставщик селектора для этого канала

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

open

public static SctpChannel open() throws IOException
Открывает канал SCTP.

Новый канал не привязан и не подключен.

Возвращает:
Новый канал SCTP
Исключения:
UnsupportedOperationException - Если протокол SCTP не поддерживается
IOException - Если произошла ошибка ввода-вывода

open

public static SctpChannel open(SocketAddress remote, int maxOutStreams, int maxInStreams) throws IOException
Открывает канал SCTP и подключает его к удалённому адресу.

Этот метод является методом удобства и эквивалентен оценке следующего выражения:

 open().connect(remote, maxOutStreams, maxInStreams);
 
Параметры:
remote - Удалённый адрес, к которому должен быть подключен новый канал
maxOutStreams - Количество потоков, которые приложение хочет иметь возможность отправлять. Должно быть неотрицательным и не больше 65536. 0 для использования значения по умолчанию для конечных точек.
maxInStreams - Максимальное количество входящих потоков, которые готово поддерживать приложение. Должно быть неотрицательным и не больше 65536. 0 для использования значения по умолчанию для конечных точек.
Возвращает:
Новый подключенный к указанному адресу канал SCTP
Исключения:
AsynchronousCloseException - Если другой поток закрывает этот канал во время выполнения операции подключения
ClosedByInterruptException - Если другой поток прерывает текущий поток во время выполнения операции подключения, тем самым закрывая канал и устанавливая статус прерывания текущего потока
UnresolvedAddressException - Если указанный удалённый адрес не полностью разрешён
UnsupportedAddressTypeException - Если тип указанного удалённого адреса не поддерживается
SecurityException - Если установлен менеджер безопасности и он не разрешает доступ к указанному удалённому узлу
UnsupportedOperationException - Если протокол SCTP не поддерживается
IOException - Если произошла какая-либо другая ошибка ввода-вывода

association

public abstract Association association() throws IOException
Возвращает ассоциацию в сокете этого канала.
Возвращает:
ассоциацию или null если сокет канала не подключен.
Исключения:
ClosedChannelException - Если канал закрыт
IOException - Если произошла какая-либо другая ошибка ввода-вывода

bind

public abstract SctpChannel bind(SocketAddress local) throws IOException
Привязывает сокет канала к локальному адресу.

Этот метод используется для установления связи между сокетом и локальными адресами. После установления связи сокет остается привязанным до тех пор, пока канал не будет закрыт. Эта связь необязательно должна быть с адресом local поскольку она может быть удалена с помощью unbindAddress, но всегда будет по крайней мере один локальный адрес привязанный к сокету канала после успешного выполнения вызова этого метода.

После того, как сокет канала успешно привязан к определенному адресу, который не назначается автоматически, к нему могут быть привязаны дополнительные адреса с помощью bindAddress, или удалены с помощью unbindAddress.

Параметры:
local - Локальный адрес для привязки сокета, или null для привязки сокета к автоматически назначенному адресу сокета
Возвращает:
Этот канал
Исключения:
AlreadyConnectedException - Если этот канал уже подключен
ClosedChannelException - Если этот канал закрыт
ConnectionPendingException - Если в этом канале уже выполняется асинхронная операция подключения
AlreadyBoundException - Если этот канал уже привязан
UnsupportedAddressTypeException - Если тип данного адреса не поддерживается
IOException - Если произошла какая-либо другая ошибка ввода-вывода
SecurityException - Если установлен менеджер безопасности и его метод checkListen запрещает операцию

bindAddress

public abstract SctpChannel bindAddress(InetAddress address) throws IOException
Добавляет указанный адрес к привязанным адресам для сокета канала.

Указанный адрес не должен быть адресом wildcard. Канал должен быть сначала привязан с помощью bind перед вызовом этого метода, в противном случае будет брошено исключение NotYetBoundException. Метод bind принимает SocketAddress в качестве аргумента, который обычно содержит номер порта и адрес. Адреса, добавленные позже с помощью этого метода, являются просто адресами, так как номер порта SCTP остается неизменным на протяжении всего жизненного цикла канала.

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

Параметры:
address - Адрес, который нужно добавить к привязанным адресам для сокета
Возвращает:
Этот канал
Исключения:
ClosedChannelException - Если этот канал закрыт
ConnectionPendingException - Если в этом канале уже выполняется асинхронная операция подключения
NotYetBoundException - Если этот канал еще не привязан
AlreadyBoundException - Если этот канал уже привязан к данному адресу
IllegalArgumentException - Если адрес является null или адресом wildcard
IOException - Если произошла какая-либо другая ошибка ввода-вывода

unbindAddress

public abstract SctpChannel unbindAddress(InetAddress address) throws IOException
Удаляет указанный адрес из привязанных адресов для сокета канала.

Указанный адрес не должен быть адресом wildcard. Канал должен быть сначала привязан с помощью bind перед вызовом этого метода, в противном случае будет брошено исключение NotYetBoundException. Если этот метод вызывается для канала, у которого address не является одним из привязанных адресов, или у которого привязан только один локальный адрес, то этот метод генерирует исключение IllegalUnbindException. Изначальный адрес, к которому привязан сокет канала с помощью bind, может быть удалён из привязанных адресов для сокета канала.

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

Параметры:
address - Адрес, который нужно удалить из привязанных адресов сокета
Возвращает:
Этот канал
Исключения:
ClosedChannelException - Если этот канал закрыт
ConnectionPendingException - Если в этом канале уже выполняется асинхронная операция подключения
NotYetBoundException - Если этот канал еще не привязан
IllegalArgumentException - Если адрес является null или адресом wildcard
IllegalUnbindException - Если address не привязан к сокету канала или у канала привязан только один адрес
IOException - Если произошла какая-либо другая ошибка ввода-вывода

connect

public abstract boolean connect(SocketAddress remote) throws IOException
Подключает сокет этого канала.

Если этот канал находится в режиме без блокировки, то вызов этого метода инициирует операцию подключения без блокировки. Если подключение установлено немедленно, как может произойти при локальном подключении, то этот метод возвращает true. В противном случае этот метод возвращает false и операция подключения должна быть завершена позже путём вызова метода finishConnect.

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

Если установлен менеджер безопасности, то этот метод проверяет, разрешает ли его метод checkConnect подключение к адресу и номеру порта указанного удалённого узла.

Этот метод может быть вызван в любое время. Если операция send или receive на этом канале вызывается во время выполнения вызова этого метода, то эта операция будет сначала блокироваться, пока данный вызов не завершится. Если попытка подключения инициирована, но терпит неудачу, то есть если вызов этого метода выбрасывает проверяемое исключение, то канал будет закрыт.

Parameters:
remote - Удаленный узел, к которому должен быть подключен этот канал
Returns:
true если подключение было установлено, false если этот канал находится в режиме без блокировки, и операция подключения выполняется
Throws:
AlreadyConnectedException - Если этот канал уже подключён
ConnectionPendingException - Если операция подключения без блокировки уже выполняется на этом канале
ClosedChannelException - Если этот канал закрыт
AsynchronousCloseException - Если другой поток закрывает этот канал во время выполнения операции подключения
ClosedByInterruptException - Если другой поток прерывает текущий поток во время выполнения операции подключения, тем самым закрывая канал и устанавливая статус прерывания текущего потока
UnresolvedAddressException - Если указанный удалённый адрес не полностью разрешён
UnsupportedAddressTypeException - Если тип указанного удалённого адреса не поддерживается
SecurityException - Если установлен менеджер безопасности, и он не разрешает доступ к данному удалённому узлу
IOException - Если произошла какая-либо другая ошибка ввода-вывода

connect

public abstract boolean connect(SocketAddress remote, int maxOutStreams, int maxInStreams) throws IOException
Подключает сокет этого канала.

Это вспомогательный метод, эквивалентный следующему выражению:

 setOption(SctpStandardSocketOptions.SCTP_INIT_MAXSTREAMS, SctpStandardSocketOption.InitMaxStreams.create(maxInStreams, maxOutStreams))
  .connect(remote);
 

Параметры maxOutStreams и maxInStreams представляют максимальное количество потоков, которое приложение хочет иметь возможность отправлять и получать. Они согласовываются с удалённым узлом и могут быть ограничены операционной системой.

Parameters:
remote - Удаленный узел, к которому должен быть подключен этот канал
maxOutStreams - Должно быть неотрицательным и не больше 65536. 0 чтобы использовать значение по умолчанию конечной точки.
maxInStreams - Должно быть неотрицательным и не больше 65536. 0 чтобы использовать значение по умолчанию конечной точки.
Returns:
true если подключение было установлено, false если этот канал находится в режиме без блокировки, и операция подключения выполняется
Throws:
AlreadyConnectedException - Если этот канал уже подключён
ConnectionPendingException - Если операция подключения без блокировки уже выполняется на этом канале
ClosedChannelException - Если этот канал закрыт
AsynchronousCloseException - Если другой поток закрывает этот канал во время выполнения операции подключения
ClosedByInterruptException - Если другой поток прерывает текущий поток во время выполнения операции подключения, тем самым закрывая канал и устанавливая статус прерывания текущего потока
UnresolvedAddressException - Если указанный удалённый адрес не полностью разрешён
UnsupportedAddressTypeException - Если тип указанного удалённого адреса не поддерживается
SecurityException - Если установлен менеджер безопасности, и он не разрешает доступ к данному удалённому узлу
IOException - Если произошла какая-либо другая ошибка ввода-вывода

isConnectionPending

public abstract boolean isConnectionPending()
Указывает, выполняется ли операция подключения на этом канале.
Returns:
true если и только если операция подключения была инициирована на этом канале, но ещё не завершена путём вызова метода finishConnect()

finishConnect

public abstract boolean finishConnect() throws IOException
Завершает процесс подключения канала SCTP.

Операция подключения без блокировки инициируется путём установки канала сокета в режим без блокировки, а затем вызовом одного из методов connect. После того, как подключение установлено или попытка завершилась неудачей, канал станет подключимым, и этот метод может быть вызван для завершения последовательности подключения. Если операция подключения завершилась неудачей, то вызов этого метода приведёт к выбрасыванию соответствующего исключения IOException.

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

Этот метод может быть вызван в любое время. Если операция send или receive на этом канале вызывается во время выполнения вызова этого метода, то эта операция будет сначала блокироваться, пока данный вызов не завершится. Если попытка подключения завершится неудачей, то есть если вызов этого метода выбросит проверяемое исключение, то канал будет закрыт.

Returns:
true если и только если сокет этого канала теперь подключен
Throws:
NoConnectionPendingException - Если этот канал не подключён и операция подключения не была инициирована
ClosedChannelException - Если этот канал закрыт
AsynchronousCloseException - Если другой поток закрывает этот канал во время выполнения операции подключения
ClosedByInterruptException - Если другой поток прерывает текущий поток во время выполнения операции подключения, тем самым закрывая канал и устанавливая статус прерывания текущего потока
IOException - Если произошла какая-либо другая ошибка ввода-вывода

getAllLocalAddresses

public abstract Set<SocketAddress> getAllLocalAddresses() throws IOException
Возвращает все адреса сокетов, к которым привязан сокет этого канала.
Returns:
Все адреса сокетов, к которым привязан сокет этого канала, или пустой Set если сокет канала не привязан
Throws:
ClosedChannelException - Если канал закрыт
IOException - Если произошла ошибка ввода-вывода

getRemoteAddresses

public abstract Set<SocketAddress> getRemoteAddresses() throws IOException
Возвращает все удалённые адреса, к которым подключен сокет этого канала.

Если канал подключён к удалённому узлу, который привязан к нескольким адресам, то именно эти адреса и подключены к сокету канала.

Returns:
Все удалённые адреса, к которым подключен сокет этого канала, или пустой Set если сокет канала не подключён
Throws:
ClosedChannelException - Если канал закрыт
IOException - Если произошла ошибка ввода-вывода

shutdown

public abstract SctpChannel shutdown() throws IOException
Закрывает подключение без закрытия канала.

Отправляет команду закрытия удалённому узлу, фактически предотвращая отправку новых данных ни одному из узлов в сокет. Дальнейшие отправки выбросят исключение ClosedChannelException. Канал остаётся открытым, чтобы позволить получение любых данных (и уведомлений), которые могли быть отправлены узлом до того, как он получил команду закрытия. Если канал уже закрыт, вызов этого метода не оказывает никакого эффекта.

Returns:
Этот канал
Throws:
NotYetConnectedException - Если этот канал ещё не подключён
ClosedChannelException - Если этот канал закрыт
IOException - Если произошла какая-либо другая ошибка ввода-вывода

getOption

public abstract <T> T getOption(SctpSocketOption<T> name) throws IOException
Возвращает значение параметра сокета.
Type Parameters:
T - Тип значения параметра сокета
Parameters:
name - Параметр сокета
Returns:
Значение параметра сокета. Значение null может быть допустимым значением для некоторых параметров сокета.
Throws:
UnsupportedOperationException - Если параметр сокета не поддерживается этим каналом
ClosedChannelException - Если этот канал закрыт
IOException - Если произошла ошибка ввода-вывода
See Also:
  • SctpStandardSocketOptions

setOption

public abstract <T> SctpChannel setOption(SctpSocketOption<T> name, T value) throws IOException
Устанавливает значение параметра сокета.
Type Parameters:
T - Тип значения параметра сокета
Parameters:
name - Параметр сокета
value - Значение параметра сокета. Значение null может быть допустимым для некоторых параметров сокета.
Returns:
Этот канал
Throws:
UnsupportedOperationException - Если параметр сокета не поддерживается этим каналом
IllegalArgumentException - Если значение не является допустимым для этого параметра сокета
ClosedChannelException - Если этот канал закрыт
IOException - Если произошла ошибка ввода-вывода
See Also:
  • SctpStandardSocketOptions

supportedOptions

public abstract Set<SctpSocketOption<?>> supportedOptions()
Возвращает набор параметров сокета, поддерживаемых этим каналом.

Этот метод будет продолжать возвращать набор параметров даже после закрытия канала.

Returns:
Набор параметров сокета, поддерживаемых этим каналом

validOps

public final int validOps()
Возвращает набор операций, определяющий поддерживаемые операции этого канала.

Каналы SCTP поддерживают подключение, чтение и запись, поэтому этот метод возвращает (SelectionKey.OP_CONNECT | SelectionKey.OP_READ | SelectionKey.OP_WRITE).

Specified by:
validOps в классе SelectableChannel
Returns:
Набор допустимых операций

receive

public abstract <T> MessageInfo receive(ByteBuffer dst, T attachment, NotificationHandler<T> handler) throws IOException
Принимает сообщение в заданный буфер и/или обрабатывает уведомление.

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

Если этот метод получает сообщение, оно копируется в заданный байтовый буфер. Сообщение передается в заданный байтовый буфер, начиная с его текущей позиции, и позиция буфера увеличивается на количество прочитанных байтов. Если оставшихся байтов в буфере меньше, чем требуется для хранения сообщения, или буфер входных данных не содержит полного сообщения, то вызов isComplete на возвращенном MessageInfo вернет false, и потребуется несколько вызовов этого метода для полного получения сообщения. В любом потоке будет частично передано только одно сообщение за раз. Параметр сокета SCTP_FRAGMENT_INTERLEAVE управляет различными аспектами того, какое переплетение сообщений происходит.

Если этот метод получает уведомление, то вызывается соответствующий метод заданного обработчика, если он есть. Если обработчик возвращает CONTINUE, то этот метод попытается получить другое сообщение/уведомление, в противном случае, если возвращается RETURN, этот метод вернет null. Если обработчиком будет брошено необработанное исключение, оно будет передано вверх по стеку через этот метод.

Этот метод может быть вызван в любое время. Если другая нить уже инициировала операцию получения на этом канале, то вызов этого метода будет заблокирован до завершения первой операции. Заданный обработчик вызывается без удержания каких-либо блокировок, используемых для обеспечения указанной политики синхронизации, таким образом, обработчики не будут блокировать другие нити от получения. Обработчик не должен вызывать метод receive этого канала, в противном случае будет брошено IllegalReceiveException.

Type Parameters:
T - Тип привязки
Parameters:
dst - Буфер, в который будут переданы байты сообщения
attachment - Объект для прикрепления к операции получения; может быть null
handler - Обработчик для обработки уведомлений от стека SCTP, или null для игнорирования любых уведомлений.
Returns:
MessageInfo, null если этот канал находится в режиме без блокировки, и сообщения немедленно недоступны, или обработчик уведомлений возвращает RETURN после обработки уведомления
Throws:
ClosedChannelException - Если этот канал закрыт
AsynchronousCloseException - Если другая нить закрывает этот канал во время выполнения операции чтения
ClosedByInterruptException - Если другая нить прерывает текущую нить во время выполнения операции чтения, тем самым закрывая канал и устанавливая состояние прерывания текущей нити
NotYetConnectedException - Если этот канал еще не подключен
IllegalReceiveException - Если заданный обработчик вызывает метод receive этого канала
IOException - Если произошла другая ошибка ввода-вывода

send

public abstract int send(ByteBuffer src, MessageInfo messageInfo) throws IOException
Отправляет сообщение через этот канал.

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

Сообщение передается из байтового буфера, как при обычной операции write.

Байты будут записаны в номер потока, указанный в streamNumber в данном messageInfo.

Этот метод может быть вызван в любое время. Если другая нить уже инициировала операцию отправки на этом канале, то вызов этого метода будет заблокирован до завершения первой операции.

Parameters:
src - Буфер, содержащий сообщение для отправки
messageInfo - Дополнительные данные о сообщении для отправки
Returns:
Количество отправленных байтов, которое будет либо количеством оставшихся байтов в буфере сообщения при вызове этого метода, или, если этот канал находится в режиме без блокировки, может быть нулем, если в базовом буфере вывода не было достаточно места для сообщения
Throws:
InvalidStreamException - Если streamNumner отрицательно или больше или равно максимальному числу исходящих потоков
ClosedChannelException - Если этот канал закрыт
AsynchronousCloseException - Если другая нить закрывает этот канал во время операции чтения
ClosedByInterruptException - Если другая нить прерывает текущую нить во время операции чтения, тем самым закрывая канал и устанавливая состояние прерывания текущей нити
NotYetConnectedException - Если этот канал еще не подключен
IOException - Если произошла другая ошибка ввода-вывода

© 1993, 2021, 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/17/docs/api/jdk.sctp/com/sun/nio/sctp/SctpChannel.html

Spec-Zone.ru

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