Spec-Zone.ru › OpenJDK 27

Класс DatagramChannel

java.lang.Object
java.nio.channels.spi.AbstractInterruptibleChannel
java.nio.channels.SelectableChannel
java.nio.channels.spi.AbstractSelectableChannel
java.nio.channels.DatagramChannel
Все реализованные интерфейсы:
Closeable, AutoCloseable, ByteChannel, Channel, GatheringByteChannel, InterruptibleChannel, MulticastChannel, NetworkChannel, ReadableByteChannel, ScatteringByteChannel, WritableByteChannel
public abstract class DatagramChannel extends AbstractSelectableChannel implements ByteChannel, ScatteringByteChannel, GatheringByteChannel, MulticastChannel
Канал с возможностью выбора для сокетов, ориентированных на дейтаграммы.

Канал дейтаграмм создается вызовом одного из методов open этого класса. Невозможно создать канал для произвольного уже существующего сокета дейтаграмм. Недавно созданный канал дейтаграмм открыт, но не подключен. Канал дейтаграмм необязательно должен быть подключен для использования методов send и receive. Канал дейтаграмм можно подключить, вызвав его метод connect, чтобы избежать накладных расходов на проверки, выполняемые при каждой операции отправки и получения. Канал дейтаграмм должен быть подключен для использования методов read и write, поскольку эти методы не принимают и не возвращают адреса сокетов.

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

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

Параметры сокета
Имя параметра Описание
SO_SNDBUF Размер буфера отправки сокета
SO_RCVBUF Размер буфера приема сокета
SO_REUSEADDR Повторное использование адреса
SO_BROADCAST Разрешить передачу широковещательных дейтаграмм
IP_TOS Октет типа обслуживания (ToS) в заголовке Internet Protocol (IP)
IP_MULTICAST_IF Сетевой интерфейс для многоадресных дейтаграмм Internet Protocol (IP)
IP_MULTICAST_TTL Время жизни многоадресных дейтаграмм Internet Protocol (IP)
IP_MULTICAST_LOOP Обратная передача многоадресных дейтаграмм Internet Protocol (IP)
Также могут поддерживаться дополнительные (зависящие от реализации) параметры.

Каналы дейтаграмм безопасно использовать из нескольких параллельных потоков. Они поддерживают параллельное чтение и запись, однако в любой момент времени читать может не более одного потока, а записывать — не более одного потока.

Начиная с:
1.4

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

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

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

Модификатор и тип Метод Описание
abstract DatagramChannel bind(SocketAddress local)
Привязывает сокет канала к локальному адресу.
abstract DatagramChannel connect(SocketAddress remote)
Подключает сокет этого канала.
abstract DatagramChannel disconnect()
Отключает сокет этого канала.
abstract SocketAddress getLocalAddress()
Возвращает адрес сокета, к которому привязан этот канал.
abstract SocketAddress getRemoteAddress()
Возвращает удаленный адрес, к которому подключен сокет этого канала.
abstract boolean isConnected()
Определяет, подключен ли сокет этого канала.
static DatagramChannel open()
Открывает канал дейтаграмм.
static DatagramChannel open(ProtocolFamily family)
Открывает канал дейтаграмм.
abstract int read(ByteBuffer dst)
Читает дейтаграмму из этого канала.
final long read(ByteBuffer[] dsts)
Читает дейтаграмму из этого канала.
abstract long read(ByteBuffer[] dsts, int offset, int length)
Читает дейтаграмму из этого канала.
abstract SocketAddress receive(ByteBuffer dst)
Принимает дейтаграмму через этот канал.
abstract int send(ByteBuffer src, SocketAddress target)
Отправляет дейтаграмму через этот канал.
abstract <T> DatagramChannel setOption(SocketOption<T> name, T value)
Задает значение параметра сокета.
abstract DatagramSocket socket()
Получает сокет дейтаграмм, связанный с этим каналом.
final int validOps()
Возвращает набор операций, определяющий поддерживаемые этим каналом операции.
abstract int write(ByteBuffer src)
Записывает дейтаграмму в этот канал.
final long write(ByteBuffer[] srcs)
Записывает дейтаграмму в этот канал.
abstract long write(ByteBuffer[] srcs, int offset, int length)
Записывает дейтаграмму в этот канал.

Методы, объявленные в классе AbstractSelectableChannel

blockingLock, configureBlocking, implCloseChannel, implCloseSelectableChannel, implConfigureBlocking, isBlocking, isRegistered, keyFor, provider, register
Модификатор и тип Метод Описание
final Object blockingLock()
Получает объект, на котором синхронизируются методы configureBlocking и register.
final SelectableChannel configureBlocking(boolean block)
Изменяет режим блокировки этого канала.
protected final void implCloseChannel()
Закрывает этот канал.
protected abstract void implCloseSelectableChannel()
Закрывает этот выбираемый канал.
protected abstract void implConfigureBlocking(boolean block)
Изменяет режим блокировки этого канала.
final boolean isBlocking()
Определяет, будет ли каждая операция ввода-вывода в этом канале блокироваться до завершения.
final boolean isRegistered()
Определяет, зарегистрирован ли этот канал в данный момент в каких-либо селекторах.
final SelectionKey keyFor(Selector sel)
Получает ключ, представляющий регистрацию канала в указанном селекторе.
final SelectorProvider provider()
Возвращает поставщика, создавшего этот канал.
final SelectionKey register(Selector sel, int ops, Object att)
Регистрирует этот канал в указанном селекторе и возвращает ключ выбора.

Методы, объявленные в классе SelectableChannel

register
Модификатор и тип Метод Описание
final SelectionKey register(Selector sel, int ops)
Регистрирует этот канал в указанном селекторе и возвращает ключ выбора.

Методы, объявленные в классе AbstractInterruptibleChannel

begin, close, end, isOpen
Модификатор и тип Метод Описание
protected final void begin()
Отмечает начало операции ввода-вывода, которая может блокироваться на неопределенное время.
final void close()
Закрывает этот канал.
protected final void end(boolean completed)
Отмечает завершение операции ввода-вывода, которая может блокироваться на неопределенное время.
final boolean isOpen()
Определяет, открыт ли этот канал.

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

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создает и возвращает копию этого объекта.
boolean equals(Object obj)
Указывает, равен ли этот объект другому объекту.
protected void finalize()
Устарело, будет удалено: этот элемент API может быть удален в будущей версии.
Финализация устарела и будет удалена в одном из будущих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
int hashCode()
Возвращает хеш-код этого объекта.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
String toString()
Возвращает строковое представление объекта.
final void wait()
Приостанавливает текущий поток до его пробуждения, обычно посредством уведомления или прерывания.
final void wait(long timeoutMillis)
Приостанавливает текущий поток до его пробуждения, обычно посредством уведомления или прерывания, либо до истечения заданного промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Приостанавливает текущий поток до его пробуждения, обычно посредством уведомления или прерывания, либо до истечения заданного промежутка реального времени.

Методы, объявленные в интерфейсе MulticastChannel

close, join, join
Модификатор и тип Метод Описание
void close()
Закрывает этот канал.
MembershipKey join(InetAddress group, NetworkInterface interf)
Присоединяется к группе многоадресной рассылки, чтобы начать получать все дейтаграммы, отправленные этой группе, и возвращает ключ членства.
MembershipKey join(InetAddress group, NetworkInterface interf, InetAddress source)
Присоединяется к группе многоадресной рассылки, чтобы начать получать дейтаграммы, отправленные этой группе с указанного адреса источника.

Методы, объявленные в интерфейсе NetworkChannel

getOption, supportedOptions
Модификатор и тип Метод Описание
<T> T getOption(SocketOption<T> name)
Возвращает значение параметра сокета.
Set<SocketOption<?>> supportedOptions()
Возвращает набор параметров сокета, поддерживаемых этим каналом.

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

DatagramChannel

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

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

open

public static DatagramChannel open() throws IOException
Открывает дейтаграммный канал.

Новый канал создается вызовом метода openDatagramChannel системного объекта по умолчанию SelectorProvider. Канал не будет подключен.

ProtocolFamily сокета канала зависит от платформы (и, возможно, от конфигурации), поэтому не определен. Метод open позволяет выбрать семейство протоколов при открытии дейтаграммного канала и должен использоваться для открытия дейтаграммных каналов, предназначенных для многоадресной рассылки по интернет-протоколу.

Возвращает:
Новый дейтаграммный канал
Исключения:
IOException — если произошла ошибка ввода-вывода
См. также:
  • системное свойство java.net.preferIPv4Stack

open

public static DatagramChannel open(ProtocolFamily family) throws IOException
Открывает дейтаграммный канал.

Параметр family используется для указания ProtocolFamily. Если дейтаграммный канал будет использоваться для многоадресной рассылки по IP, это семейство должно соответствовать типу адресов групп многоадресной рассылки, к которым будет подключаться этот канал.

Новый канал создается вызовом метода openDatagramChannel системного объекта по умолчанию SelectorProvider. Канал не будет подключен.

Примечание к API:
Сокеты домена Unix не поддерживаются.
Параметры:
family — семейство протоколов
Возвращает:
Новый дейтаграммный канал
Исключения:
UnsupportedOperationException — если указанное семейство протоколов не поддерживается. Например, если параметр задан как StandardProtocolFamily.INET6, а IPv6 на платформе не включен.
IOException — если произошла ошибка ввода-вывода
Начиная с версии:
1.7
См. также:
  • системное свойство java.net.preferIPv4Stack

validOps

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

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

Определено в:
validOps в классе SelectableChannel
Возвращает:
Допустимый набор операций

bind

public abstract DatagramChannel bind(SocketAddress local) throws IOException
Описание скопировано из интерфейса: NetworkChannel
Привязывает сокет канала к локальному адресу.

Этот метод используется для установления связи между сокетом и локальным адресом. После установления связи сокет остается привязанным до закрытия канала. Если параметр local имеет значение null, сокет будет привязан к адресу, назначенному автоматически.

Определено в:
bind в интерфейсе NetworkChannel
Параметры:
local — адрес для привязки сокета или null, чтобы привязать сокет к автоматически назначенному адресу сокета
Возвращает:
Этот канал
Исключения:
AlreadyBoundException — если сокет уже привязан
UnsupportedAddressTypeException — если тип указанного адреса не поддерживается
ClosedChannelException — если канал закрыт
IOException — если произошла другая ошибка ввода-вывода
Начиная с версии:
1.7
См. также:
  • NetworkChannel.getLocalAddress()

setOption

public abstract <T> DatagramChannel setOption(SocketOption<T> name, T value) throws IOException
Описание скопировано из интерфейса: NetworkChannel
Задает значение параметра сокета.
Определено в:
setOption в интерфейсе NetworkChannel
Параметры типа:
T — тип значения параметра сокета
Параметры:
name — параметр сокета
value — значение параметра сокета. Для некоторых параметров сокета допустимым значением может быть null.
Возвращает:
Этот канал
Исключения:
UnsupportedOperationException — если этот канал не поддерживает параметр сокета
IllegalArgumentException — если значение недопустимо для этого параметра сокета
ClosedChannelException — если этот канал закрыт
IOException — если произошла ошибка ввода-вывода
Начиная с версии:
1.7
См. также:
  • StandardSocketOptions

socket

public abstract DatagramSocket socket()
Возвращает дейтаграммный сокет, связанный с этим каналом.
Возвращает:
Дейтаграммный сокет, связанный с этим каналом

isConnected

public abstract boolean isConnected()
Показывает, подключен ли сокет этого канала.
Возвращает:
true, если и только если сокет этого канала open и подключен

connect

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

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

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

Параметры:
remote — удаленный адрес, к которому подключается этот канал
Возвращает:
Этот дейтаграммный канал
Исключения:
AlreadyConnectedException — если этот канал уже подключен
ClosedChannelException — если этот канал закрыт
AsynchronousCloseException — если другой поток закрывает этот канал во время выполнения операции подключения
ClosedByInterruptException — если другой поток прерывает текущий поток во время выполнения операции подключения, тем самым закрывая канал и устанавливая флаг прерывания текущего потока
UnresolvedAddressException — если указанный удаленный адрес разрешен не полностью
UnsupportedAddressTypeException — если тип указанного удаленного адреса не поддерживается
IOException — если произошла другая ошибка ввода-вывода

disconnect

public abstract DatagramChannel disconnect() throws IOException
Отключает сокет этого канала.

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

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

Если сокет этого канала не подключен или канал закрыт, вызов этого метода не оказывает никакого эффекта.

Примечание к API:
Если этот метод выбрасывает IOException, сокет канала может остаться в неопределенном состоянии. При неудачном отключении настоятельно рекомендуется закрыть канал.
Возвращает:
Этот дейтаграммный канал
Исключения:
IOException — если произошла другая ошибка ввода-вывода

getRemoteAddress

public abstract SocketAddress getRemoteAddress() throws IOException
Возвращает удаленный адрес, к которому подключен сокет этого канала.
Возвращает:
Удаленный адрес; null, если сокет канала не подключен
Исключения:
ClosedChannelException — если канал закрыт
IOException — если произошла ошибка ввода-вывода
Начиная с версии:
1.7

receive

public abstract SocketAddress receive(ByteBuffer dst) throws IOException
Получает дейтаграмму через этот канал.

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

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

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

Параметры:
dst — буфер, в который переносится дейтаграмма
Возвращает:
Адрес источника дейтаграммы или null, если этот канал работает в неблокирующем режиме и дейтаграмма не была доступна немедленно
Исключения:
IllegalArgumentException — если буфер доступен только для чтения
ClosedChannelException — если этот канал закрыт
AsynchronousCloseException — если другой поток закрывает этот канал во время выполнения операции чтения
ClosedByInterruptException — если другой поток прерывает текущий поток во время выполнения операции чтения, тем самым закрывая канал и устанавливая флаг прерывания текущего потока
IOException — если произошла другая ошибка ввода-вывода

send

public abstract int send(ByteBuffer src, SocketAddress target) throws IOException
Отправляет дейтаграмму через этот канал.

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

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

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

Параметры:
src — буфер, содержащий отправляемую дейтаграмму
target — адрес, на который отправляется дейтаграмма
Возвращает:
Количество отправленных байтов: либо количество байтов, оставшихся в исходном буфере на момент вызова этого метода, либо ноль, если канал работает в неблокирующем режиме и в базовом буфере вывода недостаточно места для дейтаграммы
Исключения:
AlreadyConnectedException — если этот канал подключен к адресу, отличному от указанного в target
ClosedChannelException — если этот канал закрыт
AsynchronousCloseException — если другой поток закрывает этот канал во время выполнения операции чтения
ClosedByInterruptException — если другой поток прерывает текущий поток во время выполнения операции чтения, тем самым закрывая канал и устанавливая флаг прерывания текущего потока
UnresolvedAddressException — если указанный удаленный адрес разрешен не полностью
UnsupportedAddressTypeException — если тип указанного удаленного адреса не поддерживается
IOException — если произошла другая ошибка ввода-вывода

read

public abstract int read(ByteBuffer dst) throws IOException
Считывает дейтаграмму из этого канала.

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

Определено в:
read в интерфейсе ReadableByteChannel
Параметры:
dst — буфер, в который переносятся байты
Возвращает:
Количество прочитанных байтов, возможно ноль, или -1, если канал достиг конца потока
Исключения:
NotYetConnectedException — если сокет этого канала не подключен
ClosedChannelException — если этот канал закрыт
AsynchronousCloseException — если другой поток закрывает этот канал во время выполнения операции чтения
ClosedByInterruptException — если другой поток прерывает текущий поток во время выполнения операции чтения, тем самым закрывая канал и устанавливая флаг прерывания текущего потока
IOException — если произошла другая ошибка ввода-вывода

read

public abstract long read(ByteBuffer[] dsts, int offset, int length) throws IOException
Считывает дейтаграмму из этого канала.

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

Определено в:
read в интерфейсе ScatteringByteChannel
Параметры:
dsts — буферы, в которые переносятся байты
offset — смещение в массиве буферов, указывающее на первый буфер, в который переносятся байты; должно быть неотрицательным и не превышать dsts.length
length — максимальное количество доступных буферов; должно быть неотрицательным и не превышать dsts.length - offset
Возвращает:
Количество прочитанных байтов, возможно ноль, или -1, если канал достиг конца потока
Исключения:
NotYetConnectedException — если сокет этого канала не подключен
ClosedChannelException — если этот канал закрыт
AsynchronousCloseException — если другой поток закрывает этот канал во время выполнения операции чтения
ClosedByInterruptException — если другой поток прерывает текущий поток во время выполнения операции чтения, тем самым закрывая канал и устанавливая флаг прерывания текущего потока
IOException — если произошла другая ошибка ввода-вывода

read

public final long read(ByteBuffer[] dsts) throws IOException
Считывает дейтаграмму из этого канала.

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

Определено в:
read в интерфейсе ScatteringByteChannel
Параметры:
dsts — буферы, в которые переносятся байты
Возвращает:
Количество прочитанных байтов, возможно ноль, или -1, если канал достиг конца потока
Исключения:
NotYetConnectedException — если сокет этого канала не подключен
ClosedChannelException — если этот канал закрыт
AsynchronousCloseException — если другой поток закрывает этот канал во время выполнения операции чтения
ClosedByInterruptException — если другой поток прерывает текущий поток во время выполнения операции чтения, тем самым закрывая канал и устанавливая флаг прерывания текущего потока
IOException — если произошла другая ошибка ввода-вывода

write

public abstract int write(ByteBuffer src) throws IOException
Записывает дейтаграмму в этот канал.

Этот метод можно вызывать только в том случае, если сокет этого канала подключен; в этом случае дейтаграммы отправляются непосредственно узлу-партнеру сокета. В противном случае метод работает точно так, как указано в интерфейсе WritableByteChannel.

Определено в:
write в интерфейсе WritableByteChannel
Параметры:
src — буфер, из которого извлекаются байты
Возвращает:
Количество записанных байтов, возможно ноль
Исключения:
NotYetConnectedException — если сокет этого канала не подключен
ClosedChannelException — если этот канал закрыт
AsynchronousCloseException — если другой поток закрывает этот канал во время выполнения операции записи
ClosedByInterruptException — если другой поток прерывает текущий поток во время выполнения операции записи, тем самым закрывая канал и устанавливая флаг прерывания текущего потока
IOException — если произошла другая ошибка ввода-вывода

write

public abstract long write(ByteBuffer[] srcs, int offset, int length) throws IOException
Записывает дейтаграмму в этот канал.

Этот метод можно вызывать только в том случае, если сокет этого канала подключен; в этом случае дейтаграммы отправляются непосредственно узлу-партнеру сокета. В противном случае метод работает точно так, как указано в интерфейсе GatheringByteChannel.

Определено в:
write в интерфейсе GatheringByteChannel
Параметры:
srcs — буферы, из которых извлекаются байты
offset — смещение в массиве буферов, указывающее на первый буфер, из которого извлекаются байты; должно быть неотрицательным и не превышать srcs.length
length — максимальное количество доступных буферов; должно быть неотрицательным и не превышать srcs.length - offset
Возвращает:
Количество отправленных байтов: либо количество байтов, оставшихся в исходном буфере на момент вызова этого метода, либо ноль, если канал работает в неблокирующем режиме и в базовом буфере вывода недостаточно места для дейтаграммы
Исключения:
NotYetConnectedException — если сокет этого канала не подключен
ClosedChannelException — если этот канал закрыт
AsynchronousCloseException — если другой поток закрывает этот канал во время выполнения операции записи
ClosedByInterruptException — если другой поток прерывает текущий поток во время выполнения операции записи, тем самым закрывая канал и устанавливая флаг прерывания текущего потока
IOException — если произошла другая ошибка ввода-вывода

write

public final long write(ByteBuffer[] srcs) throws IOException
Записывает дейтаграмму в этот канал.

Этот метод можно вызывать только в том случае, если сокет этого канала подключен; в этом случае дейтаграммы отправляются непосредственно узлу-партнеру сокета. В противном случае метод работает точно так, как указано в интерфейсе GatheringByteChannel.

Определено в:
write в интерфейсе GatheringByteChannel
Параметры:
srcs — буферы, из которых извлекаются байты
Возвращает:
Количество отправленных байтов: либо количество байтов, оставшихся в исходном буфере на момент вызова этого метода, либо ноль, если канал работает в неблокирующем режиме и в базовом буфере вывода недостаточно места для дейтаграммы
Исключения:
NotYetConnectedException — если сокет этого канала не подключен
ClosedChannelException — если этот канал закрыт
AsynchronousCloseException — если другой поток закрывает этот канал во время выполнения операции записи
ClosedByInterruptException — если другой поток прерывает текущий поток во время выполнения операции записи, тем самым закрывая канал и устанавливая флаг прерывания текущего потока
IOException — если произошла другая ошибка ввода-вывода

getLocalAddress

public abstract SocketAddress getLocalAddress() throws IOException
Возвращает адрес сокета, к которому привязан сокет этого канала.

Если канал bound к адресу сокета интернет-протокола, этот метод возвращает значение типа InetSocketAddress.

Если сокет канала изначально был привязан к адресу-шаблону и теперь connected, возвращенный адрес может быть локальным адресом, выбранным в качестве адреса источника для дейтаграмм, отправляемых через этот канал, а не адресом-шаблоном. При вызове disconnect() привязанный адрес возвращается к адресу-шаблону.

Определено в:
getLocalAddress в интерфейсе NetworkChannel
Возвращает:
SocketAddress, к которому привязан сокет; null, если сокет канала не привязан
Исключения:
ClosedChannelException — если канал закрыт
IOException — если произошла ошибка ввода-вывода

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, обзоры концепций, определения терминов, обходные решения и рабочие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторское право © 1993, 2026, Oracle и/или ее аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 1993, 2025, 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.

Spec-Zone.ru

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