Класс 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
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
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 |
Устанавливает значение параметра сокета. |
Методы, объявленные в классе 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
Подробное описание конструкторов
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- Если тип заданного адреса не поддерживается -
SecurityException- Если установлен менеджер безопасности и он запрещает неопределенное разрешение. Реализация этого интерфейса должна указать все необходимые разрешения. -
ClosedChannelException- Если канал закрыт -
IOException- Если произошла другая ошибка ввода-вывода - См. также:
bind
public abstract AsynchronousServerSocketChannel bind(SocketAddress local, int backlog) throws IOException
Этот метод используется для установления связи между сокетом и локальным адресом. После установления связи сокет остается привязанным до закрытия связанного канала.
Параметр backlog представляет собой максимальное количество ожидающих подключений к сокету. Его точное значение зависит от реализации. В частности, реализация может установить максимальную длину или проигнорировать параметр. Если параметр backlog имеет значение 0, или отрицательное значение, то используется значение по умолчанию, зависящее от реализации.
- Параметры:
-
local- Локальный адрес для привязки сокета, илиnullдля привязки к автоматически назначенному адресу сокета -
backlog- Максимальное число ожидающих подключений - Возвращает:
- Этот канал
- Исключения:
-
AlreadyBoundException- Если сокет уже привязан -
UnsupportedAddressTypeException- Если тип заданного адреса не поддерживается -
SecurityException- Если установлен менеджер безопасности и его методcheckListenзапрещает операцию -
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.
Для обеспечения возможности одновременной обработки новых подключений, обработчик завершения не вызывается напрямую инициализирующей нитью при немедленном приеме нового подключения (см. Потоки).
Если установлен менеджер безопасности, он проверяет, разрешены ли адрес и порт удаленного конечной точки подключения по методу менеджера безопасности checkAccept. Проверка разрешений выполняется с привилегиями, ограниченными контекстом вызова этого метода. Если проверка разрешений завершится неудачно, то подключение закрывается, а операция завершается исключением SecurityException.
- Параметры типа:
-
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.
Если установлен менеджер безопасности, вызывается его метод checkConnect с локальным адресом и -1 в качестве аргументов, чтобы проверить, разрешена ли операция. Если операция не разрешена, возвращается SocketAddress , представляющий адрес loopback и локальный порт сокета канала.
- Определено в:
-
getLocalAddressв интерфейсеNetworkChannel - Возвращает:
- Адрес, к которому привязан сокет, или
SocketAddress, представляющий обратный адрес, если доступ запрещён менеджером безопасности, илиnullесли сокет канала не привязан. - Использует:
-
ClosedChannelException- Если канал закрыт -
IOException- Если произошла ошибка ввода-вывода
© 1993, 2023, 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/21/docs/api/java.base/java/nio/channels/AsynchronousServerSocketChannel.html