Класс AsynchronousSocketChannel
- Все реализуемые интерфейсы:
Closeable, AutoCloseable, AsynchronousByteChannel, AsynchronousChannel, Channel, NetworkChannel
public abstract class AsynchronousSocketChannel extends Object implements AsynchronousByteChannel, NetworkChannel
Асинхронные каналы сокетов создаются одним из двух способов. Новый AsynchronousSocketChannel создается вызовом одного из методов open, определенных этим классом. Созданный канал открыт, но еще не подключен. Подключенный AsynchronousSocketChannel создается при установлении соединения с сокетом AsynchronousServerSocketChannel. Невозможно создать асинхронный канал сокета для произвольного, уже существующего socket.
Новый канал подключается вызовом метода connect; после подключения канал остается подключенным до его закрытия. Определить, подключен ли канал сокета, можно вызовом метода getRemoteAddress. Попытка выполнить операцию ввода-вывода для неподключенного канала приводит к выбрасыванию исключения NotYetConnectedException.
Каналы этого типа безопасно использовать из нескольких одновременно работающих потоков. Они поддерживают одновременное чтение и запись, однако в каждый момент времени может выполняться не более одной операции чтения и одной операции записи. Если поток инициирует операцию чтения до завершения предыдущей операции чтения, будет выброшено исключение ReadPendingException. Аналогично, попытка инициировать операцию записи до завершения предыдущей операции записи приведет к выбрасыванию исключения WritePendingException.
Параметры сокета настраиваются с помощью метода setOption. Асинхронные каналы сокетов поддерживают следующие параметры:
Также могут поддерживаться дополнительные параметры, зависящие от реализации.
Имя параметра Описание SO_SNDBUFРазмер буфера отправки сокета SO_RCVBUFРазмер буфера приема сокета SO_KEEPALIVEПоддерживать соединение активным SO_REUSEADDRПовторно использовать адрес TCP_NODELAYОтключить алгоритм Нейгла
Тайм-ауты
Методы read и write, определенные этим классом, позволяют указать тайм-аут при инициировании операции чтения или записи. Если тайм-аут истекает до завершения операции, операция завершается с исключением InterruptedByTimeoutException. Истечение тайм-аута может привести к несогласованному состоянию канала или базового соединения. Если реализация не может гарантировать, что байты не были прочитаны из канала, она переводит канал в зависящее от реализации состояние ошибки. Последующая попытка инициировать операцию read приводит к выбрасыванию исключения времени выполнения, тип которого не указан. Аналогично, если истекает тайм-аут операции write и реализация не может гарантировать, что байты не были записаны в канал, последующие попытки write в канал приводят к выбрасыванию исключения времени выполнения, тип которого не указан. При истечении тайм-аута состояние ByteBuffer или последовательности буферов, используемых для операции ввода-вывода, не определено. Буферы следует отбросить или, по крайней мере, необходимо следить за тем, чтобы к ним не обращались, пока канал остается открытым. Все методы, принимающие параметры тайм-аута, считают, что значения, меньшие или равные нулю, означают отсутствие тайм-аута для операции ввода-вывода.
- Начиная с:
- 1.7
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
protected |
Инициализирует новый экземпляр этого класса. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
abstract AsynchronousSocketChannel |
bind |
Привязывает сокет канала к локальному адресу. |
abstract Future |
connect |
Подключает этот канал. |
abstract <A> void |
connect |
Подключает этот канал. |
abstract SocketAddress |
getLocalAddress() |
Возвращает адрес сокета, к которому привязан сокет этого канала. |
abstract SocketAddress |
getRemoteAddress() |
Возвращает удаленный адрес, к которому подключен сокет этого канала. |
static AsynchronousSocketChannel |
open() |
Открывает асинхронный канал сокета. |
static AsynchronousSocketChannel |
open |
Открывает асинхронный канал сокета. |
final AsynchronousChannelProvider |
provider() |
Возвращает поставщика, создавшего этот канал. |
abstract Future |
read |
Считывает последовательность байтов из этого канала в указанный буфер. |
abstract <A> void |
read |
Считывает последовательность байтов из этого канала в подпоследовательность указанных буферов. |
abstract <A> void |
read |
Считывает последовательность байтов из этого канала в указанный буфер. |
final <A> void |
read |
Считывает последовательность байтов из этого канала в указанный буфер. |
abstract <T> AsynchronousSocketChannel |
setOption |
Задает значение параметра сокета. |
abstract AsynchronousSocketChannel |
shutdownInput() |
Завершает прием данных, не закрывая канал. |
abstract AsynchronousSocketChannel |
shutdownOutput() |
Завершает отправку данных, не закрывая канал. |
abstract Future |
write |
Записывает последовательность байтов из указанного буфера в этот канал. |
abstract <A> void |
write |
Записывает последовательность байтов из подпоследовательности указанных буферов в этот канал. |
abstract <A> void |
write |
Записывает последовательность байтов из указанного буфера в этот канал. |
final <A> void |
write |
Записывает последовательность байтов из указанного буфера в этот канал. |
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Методы, объявленные в интерфейсе AsynchronousChannel
close
Методы, объявленные в интерфейсе NetworkChannel
getOption, supportedOptions
Подробное описание конструкторов
AsynchronousSocketChannel
protected AsynchronousSocketChannel(AsynchronousChannelProvider provider)
- Параметры:
-
provider— провайдер, создавший этот канал
Подробное описание методов
provider
public final AsynchronousChannelProvider provider()
- Возвращает:
- Провайдер, создавший этот канал
open
public static AsynchronousSocketChannel open(AsynchronousChannelGroup group) throws IOException
Новый канал создается путем вызова метода openAsynchronousSocketChannel у AsynchronousChannelProvider, создавшего группу. Если параметр группы равен null, результирующий канал создается системным провайдером по умолчанию и привязывается к группе по умолчанию.
- Параметры:
-
group— группа, к которой следует привязать вновь созданный канал, илиnullдля группы по умолчанию - Возвращает:
- Новый асинхронный сокетный канал
- Выбрасывает:
-
ShutdownChannelGroupException— если работа группы каналов завершена -
IOException— если произошла ошибка ввода-вывода
open
public static AsynchronousSocketChannel open() throws IOException
Этот метод возвращает асинхронный сокетный канал, привязанный к группе по умолчанию. Этот метод эквивалентен вычислению выражения:
open((AsynchronousChannelGroup)null);
- Возвращает:
- Новый асинхронный сокетный канал
- Выбрасывает:
-
IOException— если произошла ошибка ввода-вывода
bind
public abstract AsynchronousSocketChannel bind(SocketAddress local) throws IOException
NetworkChannel Этот метод устанавливает связь между сокетом и локальным адресом. После установления связи сокет остается привязанным до закрытия канала. Если параметр local имеет значение null, сокет будет привязан к адресу, назначенному автоматически.
- Определено в:
-
bindв интерфейсеNetworkChannel - Параметры:
-
local— адрес, к которому следует привязать сокет, илиnull, чтобы привязать сокет к автоматически назначенному адресу сокета - Возвращает:
- Этот канал
- Выбрасывает:
-
ConnectionPendingException— если на этом канале уже выполняется операция подключения -
AlreadyBoundException— если сокет уже привязан -
UnsupportedAddressTypeException— если тип указанного адреса не поддерживается -
ClosedChannelException— если канал закрыт -
IOException— если произошла другая ошибка ввода-вывода - См. также:
setOption
public abstract <T> AsynchronousSocketChannel setOption(SocketOption<T> name, T value) throws IOException
NetworkChannel- Определено в:
-
setOptionв интерфейсеNetworkChannel - Параметры типа:
T— тип значения параметра сокета- Параметры:
-
name— параметр сокета -
value— значение параметра сокета. Значениеnullможет быть допустимым для некоторых параметров сокета. - Возвращает:
- Этот канал
- Выбрасывает:
-
IllegalArgumentException— если значение недопустимо для этого параметра сокета -
ClosedChannelException— если этот канал закрыт -
IOException— если произошла ошибка ввода-вывода - См. также:
shutdownInput
public abstract AsynchronousSocketChannel shutdownInput() throws IOException
После отключения чтения последующие операции чтения канала будут возвращать -1 — признак конца потока. Если входящая сторона соединения уже отключена, вызов этого метода не оказывает эффекта. Влияние на выполняющуюся операцию чтения зависит от системы и поэтому не определено. Эффект, если таковой имеется, при наличии непрочитанных данных в буфере приема сокета или при последующем поступлении данных также зависит от системы.
- Возвращает:
- Канал
- Выбрасывает:
-
NotYetConnectedException— если соединение с этим каналом еще не установлено -
ClosedChannelException— если этот канал закрыт -
IOException— если произошла другая ошибка ввода-вывода
shutdownOutput
public abstract AsynchronousSocketChannel shutdownOutput() throws IOException
После отключения записи последующие попытки записать данные в канал будут приводить к выбрасыванию ClosedChannelException. Если исходящая сторона соединения уже отключена, вызов этого метода не оказывает эффекта. Влияние на выполняющуюся операцию записи зависит от системы и поэтому не определено.
- Возвращает:
- Канал
- Выбрасывает:
-
NotYetConnectedException— если соединение с этим каналом еще не установлено -
ClosedChannelException— если этот канал закрыт -
IOException— если произошла другая ошибка ввода-вывода
getRemoteAddress
public abstract SocketAddress getRemoteAddress() throws IOException
Если канал привязан и подключен к сокетному адресу протокола Интернета, возвращаемое этим методом значение имеет тип InetSocketAddress.
- Возвращает:
- Удаленный адрес;
null, если сокет канала не подключен - Выбрасывает:
-
ClosedChannelException— если канал закрыт -
IOException— если произошла ошибка ввода-вывода
connect
public abstract <A> void connect(SocketAddress remote, A attachment, CompletionHandler<Void, ? super A> handler)
Этот метод инициирует операцию подключения канала. Параметр handler — это обработчик завершения, который вызывается при успешном установлении соединения или невозможности установить соединение. Если соединение установить не удается, канал закрывается.
- Параметры типа:
A— тип присоединенного объекта- Параметры:
-
remote— удаленный адрес, к которому должен быть подключен этот канал -
attachment— объект, присоединяемый к операции ввода-вывода; может бытьnull -
handler— обработчик результата - Выбрасывает:
-
UnresolvedAddressException— если указанный удаленный адрес разрешен не полностью -
UnsupportedAddressTypeException— если тип указанного удаленного адреса не поддерживается -
AlreadyConnectedException— если этот канал уже подключен -
ConnectionPendingException— если на этом канале уже выполняется операция подключения -
ShutdownChannelGroupException— если работа группы каналов завершена - См. также:
connect
public abstract Future<Void> connect(SocketAddress remote)
Этот метод инициирует операцию подключения канала. Он работает точно так же, как метод connect(SocketAddress, Object, CompletionHandler), за исключением того, что вместо указания обработчика завершения возвращает
Future, представляющий ожидающий результат. Метод get объекта Future возвращает null при успешном завершении.
- Параметры:
-
remote— удаленный адрес, к которому должен быть подключен этот канал - Возвращает:
- Объект
Future, представляющий ожидающий результат - Выбрасывает:
-
UnresolvedAddressException— если указанный удаленный адрес разрешен не полностью -
UnsupportedAddressTypeException— если тип указанного удаленного адреса не поддерживается -
AlreadyConnectedException— если этот канал уже подключен -
ConnectionPendingException— если на этом канале уже выполняется операция подключения
read
public abstract <A> void read(ByteBuffer dst, long timeout, TimeUnit unit, A attachment, CompletionHandler<Integer, ? super A> handler)
Этот метод инициирует асинхронную операцию чтения последовательности байтов из этого канала в указанный буфер. Параметр
handler — это обработчик завершения, который вызывается при завершении (или сбое) операции чтения. Передаваемый обработчику результат — количество считанных байтов или -1, если байты не удалось считать, поскольку канал достиг конца потока.
Если задано время ожидания и оно истекает до завершения операции, операция завершается с исключением InterruptedByTimeoutException. Если при истечении времени ожидания реализация не может гарантировать, что байты не были или не будут считаны из канала в указанный буфер, последующие попытки чтения из канала приведут к выбрасыванию неспецифицированного исключения времени выполнения.
В остальном этот метод работает так же, как метод AsynchronousByteChannel.read(ByteBuffer,Object,CompletionHandler).
- Параметры типа:
A— тип присоединенного объекта- Параметры:
-
dst— буфер, в который передаются байты -
timeout— максимальное время завершения операции ввода-вывода -
unit— единица измерения времени аргументаtimeout -
attachment— объект, присоединяемый к операции ввода-вывода; может бытьnull -
handler— обработчик результата - Выбрасывает:
-
IllegalArgumentException— если буфер доступен только для чтения -
ReadPendingException— если на этом канале уже выполняется операция чтения -
NotYetConnectedException— если соединение с этим каналом еще не установлено -
ShutdownChannelGroupException— если работа группы каналов завершена
read
public final <A> void read(ByteBuffer dst, A attachment, CompletionHandler<Integer, ? super A> handler)
AsynchronousByteChannel Этот метод инициирует асинхронную операцию чтения последовательности байтов из этого канала в указанный буфер. Параметр
handler — это обработчик завершения, который вызывается при завершении (или сбое) операции чтения. Передаваемый обработчику результат — количество считанных байтов или -1, если байты не удалось считать, поскольку канал достиг конца потока.
Операция чтения может считать из канала до r байтов, где r — число байтов, оставшихся в буфере, то есть dst.remaining() в момент начала чтения. Если r равно 0, операция чтения немедленно завершается с результатом 0 без выполнения операции ввода-вывода.
Предположим, что считана последовательность байтов длины n, где 0 < n <= r. Эта последовательность байтов будет передана в буфер так, что первый байт последовательности окажется по индексу p, а последний — по индексу p + n - 1, где p — позиция буфера в момент выполнения чтения. После завершения позиция буфера будет равна p + n; его предел не изменится.
Буферы небезопасно использовать одновременно из нескольких потоков, поэтому не следует обращаться к буферу до завершения операции.
Этот метод можно вызывать в любое время. Некоторые типы каналов не допускают одновременного выполнения нескольких операций чтения. Если поток инициирует операцию чтения до завершения предыдущей операции чтения, будет выброшено исключение ReadPendingException.
- Определено в:
-
readв интерфейсеAsynchronousByteChannel - Параметры типа:
A— тип присоединенного объекта- Параметры:
-
dst— буфер, в который передаются байты -
attachment— объект, присоединяемый к операции ввода-вывода; может бытьnull -
handler— обработчик завершения - Выбрасывает:
-
IllegalArgumentException— если буфер доступен только для чтения -
ReadPendingException— если канал не допускает одновременного выполнения нескольких операций чтения и предыдущая операция чтения еще не завершена -
NotYetConnectedException— если соединение с этим каналом еще не установлено -
ShutdownChannelGroupException— если работа группы каналов завершена
read
public abstract Future<Integer> read(ByteBuffer dst)
AsynchronousByteChannel Этот метод инициирует асинхронную операцию чтения последовательности байтов из этого канала в указанный буфер. Он работает точно так же, как метод read(ByteBuffer,Object,CompletionHandler), за исключением того, что вместо указания обработчика завершения возвращает Future, представляющий ожидающий результат. Метод get объекта Future возвращает количество считанных байтов или -1, если байты не удалось считать, поскольку канал достиг конца потока.
- Определено в:
-
readв интерфейсеAsynchronousByteChannel - Параметры:
-
dst— буфер, в который передаются байты - Возвращает:
- Future, представляющий результат операции
- Выбрасывает:
-
IllegalArgumentException— если буфер доступен только для чтения -
ReadPendingException— если канал не допускает одновременного выполнения нескольких операций чтения и предыдущая операция чтения еще не завершена -
NotYetConnectedException— если соединение с этим каналом еще не установлено
read
public abstract <A> void read(ByteBuffer[] dsts, int offset, int length, long timeout, TimeUnit unit, A attachment, CompletionHandler<Long, ? super A> handler)
handler — это обработчик завершения, который вызывается при завершении (или сбое) операции чтения. Передаваемый обработчику результат — количество считанных байтов или -1, если байты не удалось считать, поскольку канал достиг конца потока. Этот метод инициирует чтение до r байтов из канала, где r — общее количество байтов, оставшихся в указанной подпоследовательности массива буферов, то есть
dsts[offset].remaining()
+ dsts[offset+1].remaining()
+ ... + dsts[offset+length-1].remaining()
Предположим, что считана последовательность байтов длины n, где 0 < n <= r. Первые dsts[offset].remaining() байтов этой последовательности передаются в буфер dsts[offset], следующие dsts[offset+1].remaining() байтов — в буфер dsts[offset+1] и так далее, пока вся последовательность байтов не будет передана в указанные буферы. В каждый буфер передается максимально возможное число байтов, поэтому гарантируется, что конечная позиция каждого обновленного буфера, кроме последнего обновленного буфера, будет равна его пределу. Операционная система может ограничивать количество буферов, используемых в одной операции ввода-вывода. Если количество буферов с оставшимися байтами превышает этот предел, операция ввода-вывода выполняется с максимально допустимым операционной системой количеством буферов.
Если задано время ожидания и оно истекает до завершения операции, она завершается с исключением InterruptedByTimeoutException. Если при истечении времени ожидания реализация не может гарантировать, что байты не были или не будут считаны из канала в указанные буферы, последующие попытки чтения из канала приведут к выбрасыванию неспецифицированного исключения времени выполнения.
- Параметры типа:
A— тип присоединенного объекта- Параметры:
-
dsts— буферы, в которые передаются байты -
offset— смещение в массиве буферов, указывающее на первый буфер, в который передаются байты; должно быть неотрицательным и не превышатьdsts.length -
length— максимальное количество буферов, к которым разрешен доступ; должно быть неотрицательным и не превышатьdsts.length - offset -
timeout— максимальное время завершения операции ввода-вывода -
unit— единица измерения времени аргументаtimeout -
attachment— объект, присоединяемый к операции ввода-вывода; может бытьnull -
handler— обработчик результата - Выбрасывает:
-
IndexOutOfBoundsException— если не выполнены предварительные условия для параметровoffsetиlength -
IllegalArgumentException— если буфер доступен только для чтения -
ReadPendingException— если на этом канале уже выполняется операция чтения -
NotYetConnectedException— если соединение с этим каналом еще не установлено -
ShutdownChannelGroupException— если работа группы каналов завершена
write
public abstract <A> void write(ByteBuffer src, long timeout, TimeUnit unit, A attachment, CompletionHandler<Integer, ? super A> handler)
Этот метод инициирует асинхронную операцию записи последовательности байтов в этот канал из указанного буфера. Параметр
handler — это обработчик завершения, который вызывается при завершении (или сбое) операции записи. Передаваемый обработчику результат — количество записанных байтов.
Если задано время ожидания и оно истекает до завершения операции, она завершается с исключением InterruptedByTimeoutException. Если при истечении времени ожидания реализация не может гарантировать, что байты не были или не будут записаны в канал из указанного буфера, последующие попытки записи в канал приведут к выбрасыванию неспецифицированного исключения времени выполнения.
В остальном этот метод работает так же, как метод AsynchronousByteChannel.write(ByteBuffer,Object,CompletionHandler).
- Параметры типа:
A— тип присоединенного объекта- Параметры:
-
src— буфер, из которого извлекаются байты -
timeout— максимальное время завершения операции ввода-вывода -
unit— единица измерения времени аргументаtimeout -
attachment— объект, присоединяемый к операции ввода-вывода; может бытьnull -
handler— обработчик результата - Выбрасывает:
-
WritePendingException— если на этом канале уже выполняется операция записи -
NotYetConnectedException— если соединение с этим каналом еще не установлено -
ShutdownChannelGroupException— если работа группы каналов завершена
write
public final <A> void write(ByteBuffer src, A attachment, CompletionHandler<Integer, ? super A> handler)
AsynchronousByteChannel Этот метод инициирует асинхронную операцию записи последовательности байтов в этот канал из указанного буфера. Параметр
handler — это обработчик завершения, который вызывается при завершении (или сбое) операции записи. Передаваемый обработчику результат — количество записанных байтов.
Операция записи может записать в канал до r байтов, где r — количество байтов, оставшихся в буфере, то есть src.remaining() в момент начала записи. Если r равно 0, операция записи немедленно завершается с результатом 0 без выполнения операции ввода-вывода.
Предположим, что записана последовательность байтов длины n, где 0 < n <= r. Эта последовательность байтов будет передана из буфера начиная с индекса p, где p — позиция буфера в момент выполнения записи; индекс последнего записанного байта будет равен p + n - 1. После завершения позиция буфера будет равна p + n; его предел не изменится.
Буферы небезопасно использовать одновременно из нескольких потоков, поэтому не следует обращаться к буферу до завершения операции.
Этот метод можно вызывать в любое время. Некоторые типы каналов не допускают одновременного выполнения нескольких операций записи. Если поток инициирует операцию записи до завершения предыдущей операции записи, будет выброшено исключение WritePendingException.
- Определено в:
-
writeв интерфейсеAsynchronousByteChannel - Параметры типа:
A— тип присоединенного объекта- Параметры:
-
src— буфер, из которого извлекаются байты -
attachment— объект, присоединяемый к операции ввода-вывода; может бытьnull -
handler— объект обработчика завершения - Выбрасывает:
-
WritePendingException— если канал не допускает одновременного выполнения нескольких операций записи и предыдущая операция записи еще не завершена -
NotYetConnectedException— если соединение с этим каналом еще не установлено -
ShutdownChannelGroupException— если работа группы каналов завершена
write
public abstract Future<Integer> write(ByteBuffer src)
AsynchronousByteChannel Этот метод инициирует асинхронную операцию записи последовательности байтов в этот канал из указанного буфера. Он работает точно так же, как метод write(ByteBuffer,Object,CompletionHandler), за исключением того, что вместо указания обработчика завершения возвращает Future, представляющий ожидающий результат. Метод get объекта Future возвращает количество записанных байтов.
- Определено в:
-
writeв интерфейсеAsynchronousByteChannel - Параметры:
-
src— буфер, из которого извлекаются байты - Возвращает:
- Future, представляющий результат операции
- Выбрасывает:
-
WritePendingException— если канал не допускает одновременного выполнения нескольких операций записи и предыдущая операция записи еще не завершена -
NotYetConnectedException— если соединение с этим каналом еще не установлено
write
public abstract <A> void write(ByteBuffer[] srcs, int offset, int length, long timeout, TimeUnit unit, A attachment, CompletionHandler<Long, ? super A> handler)
handler — это обработчик завершения, который вызывается по завершении (или сбое) операции записи. Результат, передаваемый обработчику завершения, — это количество записанных байтов. Этот метод инициирует запись в этот канал до r байтов, где r — общее количество оставшихся байтов в указанной подпоследовательности заданного массива буферов, то есть
srcs[offset].remaining()
+ srcs[offset+1].remaining()
+ ... + srcs[offset+length-1].remaining()
Предположим, что записывается последовательность байтов длиной n, где 0 < n <= r. Первые не более чем srcs[offset].remaining() байтов этой последовательности записываются из буфера srcs[offset], следующие не более чем srcs[offset+1].remaining() байтов — из буфера srcs[offset+1] и так далее, пока не будет записана вся последовательность байтов. Из каждого буфера записывается максимально возможное количество байтов, поэтому конечная позиция каждого обновлённого буфера, кроме последнего обновлённого буфера, гарантированно совпадает с пределом этого буфера. Операционная система может ограничивать количество буферов, используемых в операции ввода-вывода. Если количество буферов (с оставшимися байтами) превышает это ограничение, операция ввода-вывода выполняется с максимально допустимым операционной системой количеством буферов.
Если задан тайм-аут и он истекает до завершения операции, она завершается с исключением InterruptedByTimeoutException. Если происходит тайм-аут и реализация не может гарантировать, что байты не были записаны или не будут записаны в канал из заданных буферов, дальнейшие попытки записи в канал приведут к выбросу неопределённого исключения времени выполнения.
- Параметры типа:
A— тип присоединённого объекта- Параметры:
-
srcs— буферы, из которых необходимо получить байты -
offset— смещение в массиве буферов, указывающее на первый буфер, из которого необходимо получить байты; должно быть неотрицательным и не превышатьsrcs.length -
length— максимальное количество буферов, к которым можно обратиться; должно быть неотрицательным и не превышатьsrcs.length - offset -
timeout— максимальное время, отводимое на завершение операции ввода-вывода -
unit— единица измерения времени аргументаtimeout -
attachment— объект, присоединяемый к операции ввода-вывода; может бытьnull -
handler— обработчик для получения результата - Исключения:
-
IndexOutOfBoundsException— если не выполнены предварительные условия для параметровoffsetиlength -
WritePendingException— если в этом канале уже выполняется операция записи -
NotYetConnectedException— если подключение этого канала ещё не установлено -
ShutdownChannelGroupException— если группа каналов завершила работу
getLocalAddress
public abstract SocketAddress getLocalAddress() throws IOException
Если канал bound к адресу сокета Internet Protocol, возвращаемое этим методом значение имеет тип InetSocketAddress.
- Определено в:
-
getLocalAddressв интерфейсеNetworkChannel - Возвращает:
SocketAddress, к которому привязан сокет;null, если сокет канала не привязан- Исключения:
-
ClosedChannelException— если канал закрыт -
IOException— если произошла ошибка ввода-вывода
© 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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/nio/channels/AsynchronousSocketChannel.html