Spec-Zone.ru › OpenJDK 17

Класс 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)
Устанавливает значение параметра сокета.

Методы, объявленные в классе java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

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

close

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

isOpen

Методы, объявленные в интерфейсе 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 - Если произошла другая ошибка ввода-вывода
См. также:
  • NetworkChannel.getLocalAddress()

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 - Если произошла ошибка ввода-вывода
См. также:
  • StandardSocketOptions

accept

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

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

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

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

Если установлен менеджер безопасности, он проверяет, разрешены ли адрес и номер порта удаленного конечного узла подключения методом checkAccept менеджера безопасности. Проверка разрешений выполняется с привилегиями, ограниченными вызывающим контекстом этого метода. Если проверка разрешений завершается неудачей, подключение закрывается, и операция завершается с SecurityException.

Параметры типов:
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 к интернет-адресу сокета, то возвращаемое значение этого метода имеет тип InetSocketAddress.

Если установлен менеджер безопасности, его метод checkConnect вызывается с локальным адресом и -1 в качестве аргументов, чтобы проверить разрешение операции. Если операция не разрешена, возвращается SocketAddress , представляющий loopback адрес и локальный порт сокета канала.

Указано в:
getLocalAddress в интерфейсе NetworkChannel
Возвращает:
Адрес, к которому привязан сокет, или SocketAddress , представляющий обратный адрес, если доступ запрещен менеджером безопасности, или null , если сокет канала не привязан
Исключения:
ClosedChannelException - Если канал закрыт
IOException - Если произошла ошибка ввода-вывода

© 1993, 2021, 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/17/docs/api/java.base/java/nio/channels/AsynchronousServerSocketChannel.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API