Spec-Zone .ru
спецификации, руководства, описания, API
|
public abstract class AsynchronousServerSocketChannel extends Object implements AsynchronousChannel, NetworkChannel
Асинхронный канал сокета сервера создается, вызывая open
метод этого класса. Недавно создаваемый асинхронный канал сокета сервера открыт, но еще связан. Это может быть связано с локальным адресом и сконфигурировано, чтобы прислушаться к соединениям, вызывая 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)
Инициализирует новый экземпляр этого класса.
|
Модификатор и Тип | Метод и Описание |
---|---|
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, supportedOptions
protected 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
в интерфейсе NetworkChannel
local
- Локальный адрес, чтобы обязать сокет, или 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
NetworkChannel
setOption
в интерфейсе NetworkChannel
name
- Опция сокетаvalue
- Значение опции сокета. Значение null
может быть допустимое значение для некоторых опций сокета.IllegalArgumentException
- Если значение не является допустимым значением для этой опции сокетаClosedChannelException
- Если этот канал закрываетсяIOException
- Если ошибка ввода-вывода происходитStandardSocketOptions
public abstract <A> void accept(A attachment, CompletionHandler<AsynchronousSocketChannel,? super A> handler)
Этот метод инициирует асинхронную работу, чтобы принять соединение, сделанное к сокету этого канала. handler
параметр является обработчиком завершения, который вызывается, когда соединение принимается (или сбои работы). Результат, который передают к обработчику завершения, AsynchronousSocketChannel
к новому соединению.
Когда новое соединение принимается тогда получающееся AsynchronousSocketChannel
будет связан с тем же самым AsynchronousChannelGroup
как этот канал. Если группа shutdown
и соединение принимается, тогда соединение закрывается, и работа завершается с IOException
и причина ShutdownChannelGroupException
.
Чтобы учесть параллельную обработку новых соединений, обработчик завершения не вызывается непосредственно потоком инициирования, когда новое соединение сразу принимается (см. Поточную обработку). Если менеджер безопасности был установлен тогда, он проверяет, что адрес и номер порта удаленной конечной точки соединения разрешаются менеджером безопасности checkAccept
метод. Проверка разрешения выполняется с полномочиями, которые ограничиваются контекстом вызова этого метода. Если проверка разрешения перестала работать тогда, соединение закрывается, и работа завершается с a SecurityException
.
attachment
- Объект присоединить к работе ввода-вывода; может быть null
handler
- Обработчик для того, чтобы использовать результатAcceptPendingException
- Если принять работа уже происходит на этом каналеNotYetBoundException
- Если сокет этого канала еще не был связанShutdownChannelGroupException
- Если группа канала завершиласьpublic abstract Future<AsynchronousSocketChannel> accept()
Этот метод инициирует асинхронную работу, чтобы принять соединение, сделанное к сокету этого канала. Метод ведет себя точно тем же самым способом как accept(Object, CompletionHandler)
метод за исключением того, что вместо того, чтобы определить обработчик завершения, этот метод возвращает a Future
представление результата на ожидании. Future
's get
метод возвращается AsynchronousSocketChannel
к новому соединению на успешном завершении.
Future
объект, представляющий результат на ожиданииAcceptPendingException
- Если принять работа уже происходит на этом каналеNotYetBoundException
- Если сокет этого канала еще не был связан
Для дальнейшей ссылки API и документации разработчика, см.
Авторское право © 1993, 2011, Oracle и/или его филиалы. Все права защищены.