|
Spec-Zone .ru
спецификации, руководства, описания, API
|
public abstract class AsynchronousServerSocketChannel extends Object implements AsynchronousChannel, NetworkChannel
Асинхронный канал сокета сервера создается, вызывая open метод этого class. Недавно создаваемый асинхронный канал сокета сервера открыт, но еще связан. Это может быть связано с локальным адресом и сконфигурировано, чтобы прислушаться к соединениям, вызывая bind метод. После того, как связанный, accept метод используется, чтобы инициировать принятие соединений с сокетом канала. Попытка вызвать метод accept на несвязанный канал вызовет a 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) {
...
}
});
| Модификатор | Конструктор и Описание |
|---|---|
protected |
AsynchronousServerSocketChannel(AsynchronousChannelProvider provider)
Инициализирует новый экземпляр этого class.
|
| Модификатор и Тип | Метод и Описание |
|---|---|
abstract Future<AsynchronousSocketChannel> |
accept()
Принимает соединение.
|
abstract <A> void |
accept(A attachment, CompletionHandler<AsynchronousSocketChannel,? super A> handler)
Принимает соединение.
|
AsynchronousServerSocketChannel |
bind(SocketAddress local)
Связывает сокет канала с локальным адресом и конфигурирует сокет, чтобы прислушаться к соединениям.
|
abstract AsynchronousServerSocketChannel |
bind(SocketAddress local, int backlog)
Связывает сокет канала с локальным адресом и конфигурирует сокет, чтобы прислушаться к соединениям.
|
static AsynchronousServerSocketChannel |
open()
Открывает асинхронный канал сокета сервера.
|
static AsynchronousServerSocketChannel |
open(AsynchronousChannelGroup group)
Открывает асинхронный канал сокета сервера.
|
AsynchronousChannelProvider |
provider()
Возвращает провайдера, который создал этот канал.
|
abstract <T> AsynchronousServerSocketChannel |
setOption(SocketOption<T> name, T value)
Устанавливает значение опции сокета.
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitблизкоgetLocalAddress, getOption, supportedOptionsprotected AsynchronousServerSocketChannel(AsynchronousChannelProvider provider)
public final AsynchronousChannelProvider provider()
public static AsynchronousServerSocketChannel open(AsynchronousChannelGroup group) throws IOException
Новый канал создается, вызывая openAsynchronousServerSocketChannel метод на AsynchronousChannelProvider возразите, что создал данную группу. Если групповым параметром является null тогда, получающийся канал создается провайдером значения по умолчанию в масштабе всей системы, и связывается с группой значения по умолчанию.
group - Группа, с которой недавно созданный канал должен быть связан, или null для группы значения по умолчаниюShutdownChannelGroupException - Если группа канала является завершением работыIOException - Если ошибка ввода-вывода происходитpublic static AsynchronousServerSocketChannel open() throws IOException
Этот метод возвращает асинхронный канал сокета сервера, который связывается с группой значения по умолчанию. Этот метод эквивалентен оценке выражения:
open((AsynchronousChannelGroup)null);
IOException - Если ошибка ввода-вывода происходитpublic final AsynchronousServerSocketChannel bind(SocketAddress local) throws IOException
Вызов этого метода эквивалентен следующему:
bind(local, 0);
bind в интерфейсе NetworkChannellocal - Локальный адрес, чтобы обязать сокет, или null связывать с автоматически присвоенным адресом сокетаAlreadyBoundException - Если сокет уже связываетсяUnsupportedAddressTypeException - Если тип данного адреса не поддерживаетсяSecurityException - Если менеджер безопасности устанавливается, и он отрицает неуказанное разрешение. Реализация этого интерфейса должна определить любые необходимые полномочия.ClosedChannelException - Если канал закрываетсяIOException - Если некоторая другая ошибка ввода-вывода происходитNetworkChannel.getLocalAddress()public abstract AsynchronousServerSocketChannel bind(SocketAddress local, int backlog) throws IOException
Этот метод используется, чтобы установить ассоциацию между сокетом и локальным адресом. Как только ассоциация устанавливается тогда, сокет остается связанным, пока связанный канал не закрывается.
backlog параметр является максимальным количеством соединений на ожидании на сокете. Его точная семантика является определенной реализацией. В частности реализация может наложить максимальную длину или может хотеть игнорировать параметр altogther. Если backlog у параметра есть значение 0, или отрицательная величина, затем реализация определенное значение по умолчанию используется.
local - Локальный адрес, чтобы связать сокет, или null связывать с автоматически присвоенным адресом сокетаbacklog - Максимальное количество соединений на ожиданииAlreadyBoundException - Если сокет уже связываетсяUnsupportedAddressTypeException - Если тип данного адреса не поддерживаетсяSecurityException - Если менеджер безопасности был установлен и checkListen метод отрицает работуClosedChannelException - Если канал закрываетсяIOException - Если некоторая другая ошибка ввода-вывода происходитpublic abstract <T> AsynchronousServerSocketChannel setOption(SocketOption<T> name, T value) throws IOException
NetworkChannelsetOption в интерфейсе NetworkChannelname - Опция сокетаvalue - Значение опции сокета. Значение null может быть допустимое значение для некоторых опций сокета.IllegalArgumentException - Если значение не является допустимым значением для этой опции сокетаClosedChannelException - Если этот канал закрываетсяIOException - Если ошибка ввода-вывода происходитStandardSocketOptionspublic abstract <A> void accept(A attachment,
CompletionHandler<AsynchronousSocketChannel,? super A> handler)
Этот метод инициирует асинхронную работу, чтобы принять соединение, сделанное к сокету этого канала. handler параметр является обработчиком завершения, который вызывается, когда соединение принимается (или сбои работы). Результат, который передают к обработчику завершения, AsynchronousSocketChannel к новому соединению.
Когда новое соединение принимается тогда получающееся AsynchronousSocketChannel будет связан с тем же самым AsynchronousChannelGroup как этот канал. Если группа shutdown и соединение принимается, тогда соединение закрывается, и работа завершается с IOException и причина ShutdownChannelGroupException.
Чтобы учесть параллельную обработку новых соединений, обработчик завершения не вызывается непосредственно потоком инициирования, когда новое соединение сразу принимается (см. Поточную обработку). Если менеджер безопасности был установлен тогда, он проверяет, что адрес и номер порта удаленной конечной точки соединения разрешаются менеджером безопасности checkAccept метод. Проверка разрешения выполняется с полномочиями, которые ограничиваются контекстом вызова этого метода. Если проверка разрешения перестала работать тогда, соединение закрывается, и работа завершается с a SecurityException.
attachment - Объект присоединить к работе ввода-вывода; может быть nullhandler - Обработчик для того, чтобы использовать результатAcceptPendingException - Если принять работа уже происходит на этом каналеNotYetBoundException - Если сокет этого канала еще не был связанShutdownChannelGroupException - Если группа канала завершиласьpublic abstract Future<AsynchronousSocketChannel> accept()
Этот метод инициирует асинхронную работу, чтобы принять соединение, сделанное к сокету этого канала. Метод ведет себя точно тем же самым способом как accept(Object, CompletionHandler) метод за исключением того, что вместо того, чтобы определить обработчик завершения, этот метод возвращает a Future представление результата на ожидании. Future's get метод возвращается AsynchronousSocketChannel к новому соединению на успешном завершении.
Future объект, представляющий результат на ожиданииAcceptPendingException - Если принять работа уже происходит на этом каналеNotYetBoundException - Если сокет этого канала еще не был связан
Для дальнейшей ссылки API и документации разработчика, см. Java Документация SE. Та документация содержит более подробные, предназначенные разработчиком описания, с концептуальными краткими обзорами, определениями сроков, обходных решений, и рабочих примеров кода.
Авторское право © 1993, 2013, Oracle и/или его филиалы. Все права защищены.
Проект сборка-b92