Spec-Zone.ru › OpenJDK 27

Класс AsynchronousServerSocketChannel

java.lang.Object
java.nio.channels.AsynchronousServerSocketChannel
Все реализованные интерфейсы:
Closeable, AutoCloseable, AsynchronousChannel, Channel, NetworkChannel
public abstract class AsynchronousServerSocketChannel extends Object implements AsynchronousChannel, NetworkChannel
Асинхронный канал для прослушивающих сокетов, ориентированных на потоки.

Асинхронный канал серверного сокета создается вызовом метода open этого класса. Созданный асинхронный канал серверного сокета открыт, но еще не привязан. Его можно привязать к локальному адресу и настроить для прослушивания соединений вызовом метода bind. После привязки метод accept используется для запуска приема соединений с сокетом канала. Попытка вызвать метод accept для непривязанного канала приведет к выбросу исключения NotYetBoundException.

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

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

Параметры сокета
Имя параметра Описание
SO_RCVBUF Размер буфера приема сокета
SO_REUSEADDR Повторное использование адреса
Также могут поддерживаться дополнительные параметры, специфичные для реализации.

Пример использования:

 final AsynchronousServerSocketChannel listener =
     AsynchronousServerSocketChannel.open().bind(new InetSocketAddress(5000));

 listener.accept(null, new CompletionHandler<AsynchronousSocketChannel,Void>() {
     public void completed(AsynchronousSocketChannel ch, Void att) {
         // accept the next connection
         listener.accept(null, this);

         // handle this connection
         handle(ch);
     }
     public void failed(Throwable exc, Void att) {
         ...
     }
 });
Начиная с:
1.7

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

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

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

Модификатор и тип Метод Описание
abstract Future<AsynchronousSocketChannel> accept()
Принимает соединение.
abstract <A> void accept(A attachment, CompletionHandler<AsynchronousSocketChannel, ? super A> handler)
Принимает соединение.
final AsynchronousServerSocketChannel bind(SocketAddress local)
Привязывает сокет канала к локальному адресу и настраивает его для прослушивания соединений.
abstract AsynchronousServerSocketChannel bind(SocketAddress local, int backlog)
Привязывает сокет канала к локальному адресу и настраивает его для прослушивания соединений.
abstract SocketAddress getLocalAddress()
Возвращает адрес сокета, к которому привязан сокет этого канала.
static AsynchronousServerSocketChannel open()
Открывает асинхронный канал серверного сокета.
static AsynchronousServerSocketChannel open(AsynchronousChannelGroup group)
Открывает асинхронный канал серверного сокета.
final AsynchronousChannelProvider provider()
Возвращает поставщика, создавшего этот канал.
abstract <T> AsynchronousServerSocketChannel setOption(SocketOption<T> name, T value)
Задает значение параметра сокета.

Методы, объявленные в классе 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()
Заставляет текущий поток ожидать пробуждения, обычно посредством вызова notify или interrupt.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно посредством вызова notify или interrupt, либо истечения заданного промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно посредством вызова notify или interrupt, либо истечения заданного промежутка реального времени.

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

close
Модификатор и тип Метод Описание
void close()
Закрывает этот канал.

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

isOpen
Модификатор и тип Метод Описание
boolean isOpen()
Указывает, открыт ли этот канал.

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

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

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

AsynchronousServerSocketChannel

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

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

provider

public final AsynchronousChannelProvider provider()
Возвращает поставщика, создавшего этот канал.
Возвращает:
Поставщик, создавший этот канал

open

public static AsynchronousServerSocketChannel open(AsynchronousChannelGroup group) throws IOException
Открывает асинхронный канал серверного сокета.

Новый канал создается вызовом метода openAsynchronousServerSocketChannel объекта AsynchronousChannelProvider, создавшего указанную группу. Если параметр group равен null, результирующий канал создается поставщиком по умолчанию для всей системы и привязывается к группе по умолчанию.

Параметры:
group — Группа, к которой следует привязать созданный канал, или null для группы по умолчанию
Возвращает:
Новый асинхронный канал серверного сокета
Выбрасывает:
ShutdownChannelGroupException — Если группа каналов остановлена
IOException — Если произошла ошибка ввода-вывода

open

public static AsynchronousServerSocketChannel open() throws IOException
Открывает асинхронный канал серверного сокета.

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

    open((AsynchronousChannelGroup)null);
Возвращает:
Новый асинхронный канал серверного сокета
Выбрасывает:
IOException — Если произошла ошибка ввода-вывода

bind

public final AsynchronousServerSocketChannel bind(SocketAddress local) throws IOException
Привязывает сокет канала к локальному адресу и настраивает его для прослушивания соединений.

Вызов этого метода эквивалентен следующему:

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

bind

public abstract AsynchronousServerSocketChannel bind(SocketAddress local, int backlog) throws IOException
Привязывает сокет канала к локальному адресу и настраивает его для прослушивания соединений.

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

Параметр backlog задает максимальное количество ожидающих соединений для сокета. Его точная семантика зависит от реализации. В частности, реализация может установить максимальную длину очереди или полностью проигнорировать этот параметр. Если параметр backlog имеет значение 0 или отрицательное значение, используется значение по умолчанию, определяемое реализацией.

Параметры:
local — Локальный адрес для привязки сокета или null для привязки к автоматически назначенному адресу сокета
backlog — Максимальное количество ожидающих соединений
Возвращает:
Этот канал
Выбрасывает:
AlreadyBoundException — Если сокет уже привязан
UnsupportedAddressTypeException — Если тип указанного адреса не поддерживается
ClosedChannelException — Если канал закрыт
IOException — Если произошла другая ошибка ввода-вывода

setOption

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

accept

public abstract <A> void accept(A attachment, CompletionHandler<AsynchronousSocketChannel, ? super A> handler)
Принимает соединение.

Этот метод запускает асинхронную операцию приема соединения, установленного с сокетом этого канала. Параметр handler — это обработчик завершения, вызываемый при приеме соединения (или сбое операции). В качестве результата обработчику завершения передается AsynchronousSocketChannel для нового соединения.

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

Чтобы обеспечить параллельную обработку новых соединений, обработчик завершения не вызывается непосредственно инициирующим потоком, если новое соединение принимается немедленно (см. раздел Работа с потоками).

Параметры типа:
A — Тип присоединяемого объекта
Параметры:
attachment — Объект, присоединяемый к операции ввода-вывода; может быть null
handler — Обработчик для получения результата
Выбрасывает:
AcceptPendingException — Если на этом канале уже выполняется операция accept
NotYetBoundException — Если сокет этого канала еще не привязан
ShutdownChannelGroupException — Если группа каналов завершила работу

accept

public abstract Future<AsynchronousSocketChannel> accept()
Принимает соединение.

Этот метод запускает асинхронную операцию приема соединения, установленного с сокетом этого канала. Метод ведет себя точно так же, как метод accept(Object, CompletionHandler), за исключением того, что вместо указания обработчика завершения он возвращает Future, представляющий ожидающий результат. Метод get объекта Future при успешном завершении возвращает AsynchronousSocketChannel для нового соединения.

Возвращает:
объект Future, представляющий ожидающий результат
Выбрасывает:
AcceptPendingException — Если на этом канале уже выполняется операция accept
NotYetBoundException — Если сокет этого канала еще не привязан

getLocalAddress

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

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

Определено в:
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