Класс 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Отключить алгоритм Nagle
Таймауты
Методы 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 |
Записывает последовательность байтов в этот канал из заданного буфера. |
Методы, объявленные в классе java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Методы, объявленные в интерфейсе java.nio.channels.AsynchronousChannel
close
Методы, объявленные в интерфейсе java.nio.channels.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, который создал группу. Если параметр group равен 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- Если операция подключения уже выполняется в этом канале
чтение
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).
- Type Parameters:
A- Тип прикрепления- Parameters:
-
dst- Буфер, в который будут передаваться байты -
timeout- Максимальное время ожидания завершения операции ввода-вывода -
unit- Единица измерения времени аргументаtimeout -
attachment- Объект, прикрепляемый к операции ввода-вывода; может бытьnull -
handler- Обработчик для обработки результата - Throws:
-
IllegalArgumentException- Если буфер является только для чтения -
ReadPendingException- Если операция чтения уже выполняется в этом канале -
NotYetConnectedException- Если этот канал еще не подключен -
ShutdownChannelGroupException- Если группа каналов завершила работу
чтение
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.
- Specified by:
-
readв интерфейсеAsynchronousByteChannel - Type Parameters:
A- Тип прикрепления- Parameters:
-
dst- Буфер, в который будут передаваться байты -
attachment- Объект, прикрепляемый к операции ввода-вывода; может бытьnull -
handler- Обработчик завершения - Throws:
-
IllegalArgumentException- Если буфер является только для чтения -
ReadPendingException- Если канал не позволяет иметь более одной операции чтения в очереди ожидания и предыдущая операция чтения не завершена -
NotYetConnectedException- Если этот канал еще не подключен -
ShutdownChannelGroupException- Если группа каналов завершила работу
чтение
public abstract Future<Integer> read(ByteBuffer dst)
AsynchronousByteChannel Этот метод инициирует асинхронную операцию чтения последовательности байтов из этого канала в заданный буфер. Метод ведет себя точно так же, как метод read(ByteBuffer,Object,CompletionHandler), за исключением того, что вместо указания обработчика завершения этот метод возвращает Future, представляющий ожидаемый результат. Метод get Future возвращает количество считанных байтов или -1, если байты не были считанны, потому что канал достиг конца потока.
- Specified by:
-
readв интерфейсеAsynchronousByteChannel - Parameters:
-
dst- Буфер, в который будут передаваться байты - Returns:
- Future, представляющий результат операции
- Throws:
-
IllegalArgumentException- Если буфер является только для чтения -
ReadPendingException- Если канал не позволяет иметь более одной операции чтения в очереди ожидания и предыдущая операция чтения не завершена -
NotYetConnectedException- Если этот канал еще не подключен
чтение
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. Если произошёл таймаут и реализация не может гарантировать, что байты не были прочитаны или не будут прочитаны из канала в заданные буферы, дальнейшие попытки чтения из канала приведут к выбрасыванию неопределённого исключения времени выполнения.
- Type Parameters:
A- Тип вложения- Parameters:
-
dsts- Буферы, в которые будут передаваться байты -
offset- Смещение в массиве буферов первого буфера, в который будут передаваться байты; должно быть неотрицательным и не большеdsts.length -
length- Максимальное количество буферов для доступа; должно быть неотрицательным и не большеdsts.length - offset -
timeout- Максимальное время выполнения операции ввода-вывода -
unit- Единица измерения времени аргументаtimeout -
attachment- Объект, который необходимо присоединить к операции ввода-вывода; может бытьnull -
handler- Обработчик для обработки результата - Throws:
-
IndexOutOfBoundsException- Если предварительные условия для параметровoffsetиlengthне соблюдены -
IllegalArgumentException- Если буфер только для чтения -
ReadPendingException- Если в этом канале уже происходит операция чтения -
NotYetConnectedException- Если этот канал еще не подключен -
ShutdownChannelGroupException- Если группа каналов завершила работу
запись
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).
- Type Parameters:
A- Тип вложения- Parameters:
-
src- Буфер, из которого берутся байты -
timeout- Максимальное время выполнения операции ввода-вывода -
unit- Единица измерения времени аргументаtimeout -
attachment- Объект, который необходимо присоединить к операции ввода-вывода; может бытьnull -
handler- Обработчик для обработки результата - Throws:
-
WritePendingException- Если в этом канале уже происходит операция записи -
NotYetConnectedException- Если этот канал еще не подключен -
ShutdownChannelGroupException- Если группа каналов завершила работу
запись
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.
- Specified by:
-
writeв интерфейсеAsynchronousByteChannel - Type Parameters:
A- Тип вложения- Parameters:
-
src- Буфер, из которого берутся байты -
attachment- Объект, который необходимо присоединить к операции ввода-вывода; может бытьnull -
handler- Объект обработчика завершения - Throws:
-
WritePendingException- Если канал не допускает наличия более одной ожидающей записи, и предыдущая запись не завершена -
NotYetConnectedException- Если этот канал еще не подключен -
ShutdownChannelGroupException- Если группа каналов завершила работу
запись
public abstract Future<Integer> write(ByteBuffer src)
AsynchronousByteChannel Этот метод запускает асинхронную операцию записи для записи последовательности байтов в этот канал из заданного буфера. Метод ведет себя точно так же, как метод write(ByteBuffer,Object,CompletionHandler), за исключением того, что вместо указания обработчика завершения этот метод возвращает Future, представляющий ожидаемый результат. Метод get Future возвращает количество записанных байтов.
- Specified by:
-
writeв интерфейсеAsynchronousByteChannel - Parameters:
-
src- Буфер, из которого берутся байты - Returns:
- Future, представляющий результат операции
- Throws:
-
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. Если таймаут истекает и реализация не может гарантировать, что байты не были записаны или не будут записаны в канал из заданных буферов, то последующие попытки записи в канал приведут к выбрасыванию неопределённого исключения времени выполнения.
- Type Parameters:
A- Тип вложения- Parameters:
-
srcs- Буферы, из которых будут извлекаться байты -
offset- Смещение в массиве буферов первого буфера, из которого будут извлекаться байты; должно быть неотрицательным и не большеsrcs.length -
length- Максимальное количество буферов для доступа; должно быть неотрицательным и не большеsrcs.length - offset -
timeout- Максимальное время выполнения операции ввода-вывода -
unit- Единица измерения времени параметраtimeout -
attachment- Объект, прикрепляемый к операции ввода-вывода; может бытьnull -
handler- Обработчик для обработки результата - Throws:
-
IndexOutOfBoundsException- Если предварительные условия для параметровoffsetиlengthне выполнены -
WritePendingException- Если в этом канале уже выполняется операция записи -
NotYetConnectedException- Если этот канал еще не подключен -
ShutdownChannelGroupException- Если группа каналов завершена
getLocalAddress
public abstract SocketAddress getLocalAddress() throws IOException
Если канал bound к адресу сокета протокола Интернета, то возвращаемое значение этого метода имеет тип InetSocketAddress.
- Specified by:
-
getLocalAddressв интерфейсеNetworkChannel - Returns:
- Адрес, к которому привязан сокет;
null, если сокет канала не привязан - Throws:
-
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://download.java.net/java/early_access/jdk24/docs/api/java.base/java/nio/channels/AsynchronousSocketChannel.html