Класс AsynchronousServerSocketChannel
- Все реализованные интерфейсы:
Closeable, AutoCloseable, AsynchronousChannel, Channel, NetworkChannel
public abstract class AsynchronousServerSocketChannel extends Object implements AsynchronousChannel, NetworkChannel
Асинхронный серверный сокетный канал создается вызовом метода open этого класса. Созданный асинхронный серверный сокетный канал открыт, но еще не привязан. Его можно привязать к локальному адресу и настроить для ожидания подключений, вызвав метод bind. После привязки метод accept используется для начала приема подключений к сокету канала. Попытка вызвать метод accept для непривязанного канала приведет к выбрасыванию исключения NotYetBoundException.
Каналы этого типа безопасно использовать из нескольких параллельных потоков, хотя одновременно может выполняться не более одной операции приема. Если поток инициирует операцию приема до завершения предыдущей операции приема, будет выброшено исключение 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
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
protected |
Инициализирует новый экземпляр этого класса. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
abstract Future |
accept() |
Принимает подключение. |
abstract <A> void |
accept |
Принимает подключение. |
final AsynchronousServerSocketChannel |
bind |
Привязывает сокет канала к локальному адресу и настраивает сокет для ожидания подключений. |
abstract AsynchronousServerSocketChannel |
bind |
Привязывает сокет канала к локальному адресу и настраивает сокет для ожидания подключений. |
abstract SocketAddress |
getLocalAddress() |
Возвращает адрес сокета, к которому привязан сокет этого канала. |
static AsynchronousServerSocketChannel |
open() |
Открывает асинхронный серверный сокетный канал. |
static AsynchronousServerSocketChannel |
open |
Открывает асинхронный серверный сокетный канал. |
final AsynchronousChannelProvider |
provider() |
Возвращает поставщика, создавшего этот канал. |
abstract <T> AsynchronousServerSocketChannel |
setOption |
Устанавливает значение параметра сокета. |
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Методы, объявленные в интерфейсе AsynchronousChannel
close
Методы, объявленные в интерфейсе NetworkChannel
getOption, supportedOptions
Подробное описание конструкторов
AsynchronousServerSocketChannel
protected AsynchronousServerSocketChannel(AsynchronousChannelProvider provider)
- Параметры:
-
provider— Поставщик, создавший этот канал
Подробное описание методов
provider
public final AsynchronousChannelProvider provider()
- Возвращает:
- Поставщик, создавший этот канал
open
public static AsynchronousServerSocketChannel open(AsynchronousChannelGroup group) throws IOException
Новый канал создается вызовом метода openAsynchronousServerSocketChannel объекта AsynchronousChannelProvider, создавшего указанную группу. Если параметр группы равен 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— Если произошла другая ошибка ввода-вывода - См. также:
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— Если произошла ошибка ввода-вывода - См. также:
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— Если на этом канале уже выполняется операция приема -
NotYetBoundException— Если сокет этого канала еще не привязан -
ShutdownChannelGroupException— Если работа группы каналов завершена
accept
public abstract Future<AsynchronousSocketChannel> accept()
Этот метод инициирует асинхронную операцию приема подключения, установленного через сокет этого канала. Метод работает точно так же, как метод accept(Object, CompletionHandler), за исключением того, что вместо указания обработчика завершения он возвращает Future, представляющий ожидающий результат. Метод get объекта
Future при успешном завершении возвращает AsynchronousSocketChannel нового подключения.
- Возвращает:
- объект
Future, представляющий ожидающий результат - Выбрасывает:
-
AcceptPendingException— Если на этом канале уже выполняется операция приема -
NotYetBoundException— Если сокет этого канала еще не привязан
getLocalAddress
public abstract SocketAddress getLocalAddress() throws IOException
Если канал bound к адресу сокета протокола Интернета, возвращаемое этим методом значение имеет тип 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/AsynchronousServerSocketChannel.html