Класс 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
Конструкторы
| Модификатор | Конструктор | Описание |
|---|---|---|
protected | SctpChannel(SelectorProvider provider) | Инициализирует новый экземпляр этого класса. |
Методы
| Модификатор и тип | Метод | Описание |
|---|---|---|
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) | Удаляет указанный адрес из привязанных адресов для сокета канала. |
int | validOps() | Возвращает набор операций, идентифицирующий поддерживаемые операции этого канала. |
Методы, объявленные в классе java.nio.channels.spi.AbstractSelectableChannel
configureBlocking, implCloseChannel, implCloseSelectableChannel, implConfigureBlocking, provider, register Методы, объявленные в классе java.nio.channels.SelectableChannel
blockingLock, isBlocking, isRegistered, keyFor, register Методы, объявленные в классе java.nio.channels.spi.AbstractInterruptibleChannel
begin, close, end Методы, объявленные в классе 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 над этим каналом вызывается во время выполнения вызова этого метода, то эта операция сначала заблокируется до завершения этого вызова. Если попытка подключения инициируется, но терпит неудачу, то есть, если вызов этого метода бросает проверочное исключение, то канал будет закрыт.
- Параметры:
-
remote- Удалённый узел, к которому должен быть подключен этот канал - Возвращает:
-
trueесли подключение было установлено,falseесли этот канал в асинхронном режиме и операция подключения выполняется - Бросает:
-
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 представляют максимальное количество потоков, которое приложение хочет иметь возможность отправлять и получать. Они согласовываются с удалённым узлом и могут быть ограничены операционной системой.
- Параметры:
-
remote- Удаленный узел, к которому должен быть подключен этот канал -
maxOutStreams- Должен быть неотрицательным и не больше65536.0для использования значения по умолчанию для конечных точек. -
maxInStreams- Должен быть неотрицательным и не больше65536.0для использования значения по умолчанию для конечных точек. - Возвращает:
-
trueесли подключение было установлено,falseесли этот канал находится в режиме без ожидания и операция подключения в процессе - Исключения:
-
AlreadyConnectedException- Если этот канал уже подключен -
ConnectionPendingException- Если операция подключения в режиме без ожидания уже выполняется для этого канала -
ClosedChannelException- Если этот канал закрыт -
AsynchronousCloseException- Если другой поток закрывает этот канал во время операции подключения -
ClosedByInterruptException- Если другой поток прерывает текущий поток во время операции подключения, тем самым закрывая канал и устанавливая состояние прерывания текущего потока -
UnresolvedAddressException- Если предоставленный удалённый адрес не полностью разрешен -
UnsupportedAddressTypeException- Если тип предоставленного удалённого адреса не поддерживается -
SecurityException- Если установлен менеджер безопасности и он не разрешает доступ к данному удалённому узлу -
IOException- Если произошла какая-либо другая ошибка ввода-вывода
isConnectionPending
public abstract boolean isConnectionPending()
Указывает, выполняется ли операция подключения для этого канала.
- Возвращает:
-
trueтолько если операция подключения была инициирована для этого канала, но ещё не завершена вызовом методаfinishConnect()
finishConnect
public abstract boolean finishConnect()
throws IOException Завершает процесс подключения канала SCTP.
Операция подключения в режиме без ожидания инициируется путем перевода сокет-канала в режим без ожидания, а затем вызовом одного из методов connect. После установления подключения или неудачной попытки канал станет соединяемым, и этот метод можно вызвать для завершения последовательности подключения. Если операция подключения не удалась, вызов этого метода вызовет соответствующее исключение IOException.
Если этот канал уже подключен, этот метод не будет блокировать и сразу вернёт true. Если этот канал находится в режиме без ожидания, этот метод вернёт false если процесс подключения ещё не завершён. Если этот канал находится в режиме ожидания, этот метод будет блокировать, пока подключение не будет завершено или не произойдёт ошибка, и всегда вернёт true или бросит проверяемое исключение, описывающее ошибку.
Этот метод можно вызвать в любое время. Если операция send или receive для этого канала вызывается во время выполнения вызова этого метода, то эта операция сначала будет блокироваться до завершения этого вызова. Если попытка подключения не удалась, то есть, если вызов этого метода выбросит проверяемое исключение, то канал будет закрыт.
- Возвращает:
-
trueесли и только если сокет этого канала теперь подключен - Исключения:
-
NoConnectionPendingException- Если этот канал не подключен и операция подключения не была инициирована -
ClosedChannelException- Если этот канал закрыт -
AsynchronousCloseException- Если другой поток закрывает этот канал во время операции подключения -
ClosedByInterruptException- Если другой поток прерывает текущий поток во время операции подключения, тем самым закрывая канал и устанавливая состояние прерывания текущего потока -
IOException- Если произошла какая-либо другая ошибка ввода-вывода
getAllLocalAddresses
public abstract Set<SocketAddress> getAllLocalAddresses()
throws IOException Возвращает все адреса сокетов, к которым привязан сокет этого канала.
- Возвращает:
- Все адреса сокетов, к которым привязан сокет этого канала, или пустой
Setесли сокет канала не привязан - Исключения:
-
ClosedChannelException- Если канал закрыт -
IOException- Если произошла ошибка ввода-вывода
getRemoteAddresses
public abstract Set<SocketAddress> getRemoteAddresses()
throws IOException Возвращает все удалённые адреса, к которым подключен сокет этого канала.
Если канал подключён к удалённому узлу, привязанному к нескольким адресам, то это те адреса, к которым подключен сокет канала.
- Возвращает:
- Все удаленные адреса, к которым подключен сокет этого канала, или пустой
Setесли сокет канала не подключен - Исключения:
-
ClosedChannelException- Если канал закрыт -
IOException- Если произошла ошибка ввода-вывода
shutdown
public abstract SctpChannel shutdown()
throws IOException Отключить подключение без закрытия канала.
Отправляет команду закрытия подключения удалённому узлу, фактически предотвращая отправку новых данных в сокет ни одним из узлов. Дальнейшие отправки вызовут ClosedChannelException. Канал остаётся открытым, чтобы позволить получение любых данных (и уведомлений), которые могли быть отправлены узлом до получения им команды закрытия. Если канал уже закрыт, вызов этого метода не оказывает никакого влияния.
- Возвращает:
- Этот канал
- Исключения:
-
NotYetConnectedException- Если этот канал ещё не подключен -
ClosedChannelException- Если этот канал закрыт -
IOException- Если произошла какая-либо другая ошибка ввода-вывода
getOption
public abstract <T> T getOption(SctpSocketOption<T> name)
throws IOException Возвращает значение параметра сокета.
- Параметры типа:
-
T- Тип значения параметра сокета - Параметры:
-
name- Параметр сокета - Возвращает:
- Значение параметра сокета. Значение
nullможет быть допустимым значением для некоторых параметров сокета. - Исключения:
-
UnsupportedOperationException- Если параметр сокета не поддерживается этим каналом -
ClosedChannelException- Если этот канал закрыт -
IOException- Если произошла ошибка ввода-вывода - См. также:
SctpStandardSocketOptions
setOption
public abstract <T> SctpChannel setOption(SctpSocketOption<T> name,
T value)
throws IOException Устанавливает значение параметра сокета.
- Параметры типа:
-
T- Тип значения параметра сокета - Параметры:
-
name- Параметр сокета -
value- Значение параметра сокета. Значениеnullможет быть допустимым значением для некоторых параметров сокета. - Возвращает:
- Этот канал
- Исключения:
-
UnsupportedOperationException- Если параметр сокета не поддерживается этим каналом -
IllegalArgumentException- Если значение не является допустимым для этого параметра сокета -
ClosedChannelException- Если этот канал закрыт -
IOException- Если произошла ошибка ввода-вывода - См. также:
SctpStandardSocketOptions
supportedOptions
public abstract Set<SctpSocketOption<?>> supportedOptions()
Возвращает набор параметров сокета, поддерживаемых этим каналом.
Этот метод будет продолжать возвращать набор параметров даже после закрытия канала.
- Возвращает:
- Набор параметров сокета, поддерживаемых этим каналом
validOps
public final int validOps()
Возвращает набор операций, поддерживаемых этим каналом.
Каналы SCTP поддерживают подключение, чтение и запись, поэтому этот метод возвращает (SelectionKey.OP_CONNECT | SelectionKey.OP_READ | SelectionKey.OP_WRITE).
- Определено в:
-
validOpsв классеSelectableChannel - Возвращает:
- Набор допустимых операций
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, 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/SctpChannel.html