Spec-Zone .ru
спецификации, руководства, описания, API
|
public abstract class AsynchronousSocketChannel extends Object implements AsynchronousByteChannel, NetworkChannel
Асинхронные каналы сокета создаются одним из двух способов. Недавно создаваемый AsynchronousSocketChannel
создается, вызывая один из open
методы определяются этим class. Недавно создаваемый канал открыт, но еще соединен. Соединенный AsynchronousSocketChannel
создается, когда соединение делается к сокету AsynchronousServerSocketChannel
. Не возможно создать асинхронный канал сокета для произвольного, существуя ранее socket
.
Недавно создаваемый канал соединяется, вызывая connect
метод; после того, как соединенный, канал остается соединенным, пока он не закрывается. Соединяется ли канал сокета, может быть определен, вызывая getRemoteAddress
метод. Попытка вызвать работу ввода-вывода на несвязанный канал вызовет a NotYetConnectedException
быть брошенным.
Каналы этого типа безопасны для использования многократными параллельными потоками. Они поддерживают параллельное чтение и запись, хотя самое большее одна операция чтения и одна операция записи могут быть выдающимися в любое время. Если поток инициирует операцию чтения прежде, чем предыдущая операция чтения завершилась тогда a ReadPendingException
будет брошен. Точно так же попытка инициировать операцию записи перед предыдущей записью завершилась, бросит a WritePendingException
.
Опции сокета конфигурируются, используя setOption
метод. Асинхронные каналы сокета поддерживают следующие опции:
Дополнительный (определенная реализация) опции могут также поддерживаться.
Имя опции Описание SO_SNDBUF
Размер сокета отправляет буфер SO_RCVBUF
Размер сокета получает буфер SO_KEEPALIVE
Поддержите соединение SO_REUSEADDR
Адрес повторного использования TCP_NODELAY
Отключите алгоритм Nagle
read
и write
методы, определенные этим class, позволяют тайм-ауту быть определенным, инициируя операцию чтения или операцию записи. Если тайм-аут протекает прежде, чем работа завершается тогда, работа завершается с исключением InterruptedByTimeoutException
. Тайм-аут может оставить канал, или базовое соединение, в непоследовательном состоянии. Где реализация не может гарантировать, что байты не были считаны из канала тогда, это помещает канал в реализацию определенное ошибочное состояние. Последующая попытка инициировать a read
работа заставляет неуказанное исключение на этапе выполнения быть брошенным. Так же, если a write
времена работы и реализация не могут гарантировать, что байты не были записаны каналу тогда дальнейшие попытки к write
к каналу заставляют неуказанное исключение на этапе выполнения быть брошенным. Когда тайм-аут протекает тогда состояние ByteBuffer
, или последовательность буферов, для работы ввода-вывода не определяется. Буферы должны быть отброшены или по крайней мере заботиться, должен быть взят, чтобы гарантировать, что к буферам не получают доступ, в то время как канал остается открытым. Все методы, которые принимают обработку параметров тайм-аута, оценивают меньше чем или равный, чтобы обнулить, чтобы означать, что работа ввода-вывода не делает тайм-аута.
Модификатор | Конструктор и Описание |
---|---|
protected |
AsynchronousSocketChannel(AsynchronousChannelProvider provider)
Инициализирует новый экземпляр этого class.
|
Модификатор и Тип | Метод и Описание |
---|---|
abstract AsynchronousSocketChannel |
bind(SocketAddress local)
Связывает сокет канала с локальным адресом.
|
abstract Future<Void> |
connect(SocketAddress remote)
Соединяет этот канал.
|
abstract <A> void |
connect(SocketAddress remote, A attachment, CompletionHandler<Void,? super A> handler)
Соединяет этот канал.
|
abstract SocketAddress |
getRemoteAddress()
Возвращает удаленный адрес, с которым соединяется сокет этого канала.
|
static AsynchronousSocketChannel |
open()
Открывает асинхронный канал сокета.
|
static AsynchronousSocketChannel |
open(AsynchronousChannelGroup group)
Открывает асинхронный канал сокета.
|
AsynchronousChannelProvider |
provider()
Возвращает провайдера, который создал этот канал.
|
abstract Future<Integer> |
read(ByteBuffer dst)
Читает последовательность байтов от этого канала в данный буфер.
|
abstract <A> void |
read(ByteBuffer[] dsts, int offset, int length, long timeout, TimeUnit unit, A attachment, CompletionHandler<Long,? super A> handler)
Читает последовательность байтов от этого канала в подпоследовательность данных буферов.
|
<A> void |
read(ByteBuffer dst, A attachment, CompletionHandler<Integer,? super A> handler)
Читает последовательность байтов от этого канала в данный буфер.
|
abstract <A> void |
read(ByteBuffer dst, long timeout, TimeUnit unit, A attachment, CompletionHandler<Integer,? super A> handler)
Читает последовательность байтов от этого канала в данный буфер.
|
abstract <T> AsynchronousSocketChannel |
setOption(SocketOption<T> name, T value)
Устанавливает значение опции сокета.
|
abstract AsynchronousSocketChannel |
shutdownInput()
Завершение работы соединение для того, чтобы читать, не закрывая канал.
|
abstract AsynchronousSocketChannel |
shutdownOutput()
Завершение работы соединение для того, чтобы записать, не закрывая канал.
|
abstract Future<Integer> |
write(ByteBuffer src)
Пишет последовательность байтов к этому каналу от данного буфера.
|
abstract <A> void |
write(ByteBuffer[] srcs, int offset, int length, long timeout, TimeUnit unit, A attachment, CompletionHandler<Long,? super A> handler)
Пишет последовательность байтов к этому каналу от подпоследовательности данных буферов.
|
<A> void |
write(ByteBuffer src, A attachment, CompletionHandler<Integer,? super A> handler)
Пишет последовательность байтов к этому каналу от данного буфера.
|
abstract <A> void |
write(ByteBuffer src, long timeout, TimeUnit unit, A attachment, CompletionHandler<Integer,? super A> handler)
Пишет последовательность байтов к этому каналу от данного буфера.
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
близко
getLocalAddress, getOption, supportedOptions
protected AsynchronousSocketChannel(AsynchronousChannelProvider provider)
public final AsynchronousChannelProvider provider()
public static AsynchronousSocketChannel open(AsynchronousChannelGroup group) throws IOException
Новый канал создается, вызывая openAsynchronousSocketChannel
метод на AsynchronousChannelProvider
это создало группу. Если групповой параметр null
тогда получающийся канал создается провайдером значения по умолчанию в масштабе всей системы, и связывается с группой значения по умолчанию.
group
- Группа, с которой недавно созданный канал должен быть связан, или null
для группы значения по умолчаниюShutdownChannelGroupException
- Если группа канала является завершением работыIOException
- Если ошибка ввода-вывода происходитpublic static AsynchronousSocketChannel open() throws IOException
Этот метод возвращает асинхронный канал сокета, который связывается с группой значения по умолчанию. Этот метод эквивалентен оценке выражения:
open((AsynchronousChannelGroup)null);
IOException
- Если ошибка ввода-вывода происходитpublic abstract AsynchronousSocketChannel bind(SocketAddress local) throws IOException
NetworkChannel
Этот метод используется, чтобы установить ассоциацию между сокетом и локальным адресом. Как только ассоциация устанавливается тогда, сокет остается связанным, пока канал не закрывается. Если local
у параметра есть значение null
тогда сокет будет связан с адресом, который присваивается автоматически.
bind
в интерфейсе NetworkChannel
local
- Адрес, чтобы связать сокет, или null
связывать сокет с автоматически присвоенным адресом сокетаConnectionPendingException
- Если работа соединения уже происходит на этом каналеAlreadyBoundException
- Если сокет уже связываетсяUnsupportedAddressTypeException
- Если тип данного адреса не поддерживаетсяClosedChannelException
- Если канал закрываетсяIOException
- Если некоторая другая ошибка ввода-вывода происходитNetworkChannel.getLocalAddress()
public abstract <T> AsynchronousSocketChannel setOption(SocketOption<T> name, T value) throws IOException
NetworkChannel
setOption
в интерфейсе NetworkChannel
name
- Опция сокетаvalue
- Значение опции сокета. Значение null
может быть допустимое значение для некоторых опций сокета.IllegalArgumentException
- Если значение не является допустимым значением для этой опции сокетаClosedChannelException
- Если этот канал закрываетсяIOException
- Если ошибка ввода-вывода происходитStandardSocketOptions
public abstract AsynchronousSocketChannel shutdownInput() throws IOException
Как только завершение работы для того, чтобы считать тогда дальнейшие чтения на канале возвратится -1
, индикация конца потока. Если входная сторона соединения уже является завершением работы, тогда вызывающим этот метод, не имеет никакого эффекта. Эффект на выдающуюся операцию чтения системно-зависим и поэтому не определенный. Эффект, если таковые вообще имеются, когда есть данные в сокете, получает буфер, который не был считан, или данные прибывают впоследствии, также системно-зависимо.
NotYetConnectedException
- Если этот канал еще не соединяетсяClosedChannelException
- Если этот канал закрываетсяIOException
- Если некоторая другая ошибка ввода-вывода происходитpublic abstract AsynchronousSocketChannel shutdownOutput() throws IOException
Как только завершение работы для того, чтобы записать тогда дальнейшие попытки записать в канал бросит ClosedChannelException
. Если выходная сторона соединения уже является завершением работы, тогда вызывающим этот метод, не имеет никакого эффекта. Эффект на выдающуюся операцию записи системно-зависим и поэтому не определенный.
NotYetConnectedException
- Если этот канал еще не соединяетсяClosedChannelException
- Если этот канал закрываетсяIOException
- Если некоторая другая ошибка ввода-вывода происходитpublic abstract SocketAddress getRemoteAddress() throws IOException
Где канал связывается и соединяется с интернет-адресом сокета Протокола тогда, возвращаемое значение от этого метода имеет тип InetSocketAddress
.
null
если сокет канала не соединяетсяClosedChannelException
- Если канал закрываетсяIOException
- Если ошибка ввода-вывода происходитpublic abstract <A> void connect(SocketAddress remote, A attachment, CompletionHandler<Void,? super A> handler)
Этот метод инициирует работу, чтобы соединить этот канал. handler
параметр является обработчиком завершения, который вызывается, когда соединение успешно устанавливается, или соединение не может быть установлено. Если соединение не может быть установлено тогда, канал закрывается.
Этот метод выполняет точно те же самые проверки безопасности как Socket
class. Таким образом, если менеджер безопасности был установлен тогда, этот метод проверяет что checkConnect
метод разрешает соединяться с адресом и номером порта данной удаленной конечной точки.
remote
- Удаленный адрес, с которым должен быть соединен этот каналattachment
- Объект присоединить к работе ввода-вывода; может быть null
handler
- Обработчик для того, чтобы использовать результатUnresolvedAddressException
- Если данный удаленный адрес не полностью разрешаетсяUnsupportedAddressTypeException
- Если тип данного удаленного адреса не поддерживаетсяAlreadyConnectedException
- Если этот канал уже соединяетсяConnectionPendingException
- Если работа соединения уже происходит на этом каналеShutdownChannelGroupException
- Если группа канала завершиласьSecurityException
- Если менеджер безопасности был установлен, и он не разрешает доступ к данной удаленной конечной точкеgetRemoteAddress()
public abstract Future<Void> connect(SocketAddress remote)
Этот метод инициирует работу, чтобы соединить этот канал. Этот метод ведет себя точно тем же самым способом как connect(SocketAddress, Object, CompletionHandler)
метод за исключением того, что вместо того, чтобы определить обработчик завершения, этот метод возвращает a Future
представление результата на ожидании. Future
's get
возвраты метода null
на успешном завершении.
remote
- Удаленный адрес, с которым должен быть соединен этот каналFuture
объект, представляющий результат на ожиданииUnresolvedAddressException
- Если данный удаленный адрес не полностью разрешаетсяUnsupportedAddressTypeException
- Если тип данного удаленного адреса не поддерживаетсяAlreadyConnectedException
- Если этот канал уже соединяетсяConnectionPendingException
- Если работа соединения уже происходит на этом каналеSecurityException
- Если менеджер безопасности был установлен, и он не разрешает доступ к данной удаленной конечной точкеpublic abstract <A> void read(ByteBuffer dst, long timeout, TimeUnit unit, A attachment, CompletionHandler<Integer,? super A> handler)
Этот метод инициирует асинхронную операцию чтения, чтобы считать последовательность байтов от этого канала в данный буфер. handler
параметр является обработчиком завершения, который вызывается, когда операция чтения завершается (или сбои). Результатом, который передают к обработчику завершения, является число чтения байтов или -1
если никакие байты не могли бы быть считаны, потому что канал достиг конца потока.
Если тайм-аут определяется, и тайм-аут протекает прежде, чем работа завершается тогда, работа завершается с исключением InterruptedByTimeoutException
. Где тайм-аут происходит, и реализация не может гарантировать, что байты не были считаны, или не будут считаны из канала в данный буфер, тогда дальнейшие попытки читать из канала заставят неопределенное исключение на этапе выполнения быть брошенным.
Иначе этот метод работает тем же самым способом AsynchronousByteChannel.read(ByteBuffer,Object,CompletionHandler)
метод.
dst
- Буфер, в который должны быть переданы байтыtimeout
- Максимальное время для работы ввода-вывода, чтобы завершитьсяunit
- Единица измерения времени timeout
параметрattachment
- Объект присоединить к работе ввода-вывода; может быть null
handler
- Обработчик для того, чтобы использовать результатIllegalArgumentException
- Если буфер только для чтенияReadPendingException
- Если операция чтения уже происходит на этом каналеNotYetConnectedException
- Если этот канал еще не соединяетсяShutdownChannelGroupException
- Если группа канала завершиласьpublic final <A> void read(ByteBuffer dst, A attachment, CompletionHandler<Integer,? super A> handler)
AsynchronousByteChannel
Этот метод инициирует асинхронную операцию чтения, чтобы считать последовательность байтов от этого канала в данный буфер. handler
параметр является обработчиком завершения, который вызывается, когда операция чтения завершается (или сбои). Результатом, который передают к обработчику завершения, является число чтения байтов или -1
если никакие байты не могли бы быть считаны, потому что канал достиг конца потока.
Операция чтения может читать до r байтов из канала, где r является числом байтов, остающихся в буфере, то есть, dst.remaining()
в то время, когда чтение предпринимается. Где r 0, операция чтения сразу завершается с результатом 0
не инициируя работу ввода-вывода.
Предположите, что последовательность байта длины n читается, где 0 < n <= r. Эта последовательность байта будет передана в буфер так, чтобы первый байт в последовательности был в, индексируют p, и последний байт в, индексируют p + n - 1, где p является позицией буфера в настоящее время, чтение выполняется. После завершения позиция буфера будет равна p + n; его предел не будет изменяться.
Буферы не безопасны для использования многократными параллельными потоками, таким образом, забота должна быть проявлена, чтобы не получить доступ к буферу, пока работа не завершилась.
В любое время может быть вызван этот метод. Некоторые типы канала, возможно, не позволяют больше чем одному чтению быть выдающимся в любой момент времени. Если поток инициирует операцию чтения прежде, чем предыдущая операция чтения завершилась тогда a ReadPendingException
будет брошен.
read
в интерфейсе AsynchronousByteChannel
dst
- Буфер, в который должны быть переданы байтыattachment
- Объект присоединить к работе ввода-вывода; может быть null
handler
- Обработчик завершенияIllegalArgumentException
- Если буфер только для чтенияReadPendingException
- Если канал не позволяет больше чем одному чтению быть выдающимся, и предыдущее чтение не завершилосьNotYetConnectedException
- Если этот канал еще не соединяетсяShutdownChannelGroupException
- Если группа канала завершиласьpublic abstract Future<Integer> read(ByteBuffer dst)
AsynchronousByteChannel
Этот метод инициирует асинхронную операцию чтения, чтобы считать последовательность байтов от этого канала в данный буфер. Метод ведет себя точно тем же самым способом как read(ByteBuffer,Object,CompletionHandler)
метод за исключением того, что вместо того, чтобы определить обработчик завершения, этот метод возвращает a Future
представление результата на ожидании. Future
's get
метод возвращает число чтения байтов или -1
если никакие байты не могли бы быть считаны, потому что канал достиг конца потока.
read
в интерфейсе AsynchronousByteChannel
dst
- Буфер, в который должны быть переданы байтыIllegalArgumentException
- Если буфер только для чтенияReadPendingException
- Если канал не позволяет больше чем одному чтению быть выдающимся, и предыдущее чтение не завершилосьNotYetConnectedException
- Если этот канал еще не соединяетсяpublic abstract <A> void read(ByteBuffer[] dsts, int offset, int length, long timeout, TimeUnit unit, A attachment, CompletionHandler<Long,? super A> handler)
handler
параметр является обработчиком завершения, который вызывается, когда операция чтения завершается (или сбои). Результатом, который передают к обработчику завершения, является число чтения байтов или -1
если никакие байты не могли бы быть считаны, потому что канал достиг конца потока. Этот метод инициирует чтение до r байтов от этого канала, где r является общим количеством байтов, остающихся в указанной подпоследовательности данного буферного массива, то есть,
в настоящее время то, что чтение предпринимается.dsts[offset].remaining() + dsts[offset+1].remaining() + ... + dsts[offset+length-1].remaining()
Предположите, что последовательность байта длины n читается, где 0 < n <= r. До первых байтов dsts[offset].remaining() этой последовательности передаются в буферный dsts[offset], до следующего dsts[offset+1].remaining(), байты передаются в буферный dsts[offset+1], и т.д, пока вся последовательность байта не передается в данные буферы. Так много байтов насколько возможно передаются в каждый буфер, следовательно заключительная позиция каждого обновленного буфера, кроме последнее обновление буфера, как гарантируют, будет равна пределу того буфера. Базовая операционная система может наложить предел на число буферов, которые могут использоваться в работе ввода-вывода. Где число буферов (с остающимися байтами), превышает этот предел, тогда работа ввода-вывода выполняется с максимальным количеством буферов, позволенных операционной системой.
Если тайм-аут определяется, и тайм-аут протекает прежде, чем работа завершается тогда, это завершается с исключением InterruptedByTimeoutException
. Где тайм-аут происходит, и реализация не может гарантировать, что байты не были считаны, или не будут считаны из канала в данные буферы, тогда дальнейшие попытки читать из канала заставят неопределенное исключение на этапе выполнения быть брошенным.
dsts
- Буферы, в которые должны быть переданы байтыoffset
- Смещение в пределах буферного массива первого буфера, в который должны быть переданы байты; должно быть неотрицательным и не больше чем dsts.length
length
- Максимальное количество буферов, которые будут получены доступ; должно быть неотрицательным и не больше чем dsts.length - offset
timeout
- Максимальное время для работы ввода-вывода, чтобы завершитьсяunit
- Единица измерения времени timeout
параметрattachment
- Объект присоединить к работе ввода-вывода; может быть null
handler
- Обработчик для того, чтобы использовать результатIndexOutOfBoundsException
- Если предварительные условия для offset
и length
параметр не встречаетсяIllegalArgumentException
- Если буфер только для чтенияReadPendingException
- Если операция чтения уже происходит на этом каналеNotYetConnectedException
- Если этот канал еще не соединяетсяShutdownChannelGroupException
- Если группа канала завершиласьpublic abstract <A> void write(ByteBuffer src, long timeout, TimeUnit unit, A attachment, CompletionHandler<Integer,? super A> handler)
Этот метод инициирует асинхронную операцию записи, чтобы записать последовательность байтов к этому каналу от данного буфера. handler
параметр является обработчиком завершения, который вызывается, когда операция записи завершается (или сбои). Результатом, который передают к обработчику завершения, является число записанных байтов.
Если тайм-аут определяется, и тайм-аут протекает прежде, чем работа завершается тогда, это завершается с исключением InterruptedByTimeoutException
. Где тайм-аут происходит, и реализация не может гарантировать, что байты не были записаны, или не будут записаны каналу от данного буфера, тогда дальнейшие попытки записать в канал заставят неопределенное исключение на этапе выполнения быть брошенным.
Иначе этот метод работает тем же самым способом AsynchronousByteChannel.write(ByteBuffer,Object,CompletionHandler)
метод.
src
- Буфер, от которого должны быть получены байтыtimeout
- Максимальное время для работы ввода-вывода, чтобы завершитьсяunit
- Единица измерения времени timeout
параметрattachment
- Объект присоединить к работе ввода-вывода; может быть null
handler
- Обработчик для того, чтобы использовать результатWritePendingException
- Если операция записи уже происходит на этом каналеNotYetConnectedException
- Если этот канал еще не соединяетсяShutdownChannelGroupException
- Если группа канала завершиласьpublic final <A> void write(ByteBuffer src, A attachment, CompletionHandler<Integer,? super A> handler)
AsynchronousByteChannel
Этот метод инициирует асинхронную операцию записи, чтобы записать последовательность байтов к этому каналу от данного буфера. handler
параметр является обработчиком завершения, который вызывается, когда операция записи завершается (или сбои). Результатом, который передают к обработчику завершения, является число записанных байтов.
Операция записи может записать до r байтов в канал, где r является числом байтов, остающихся в буфере, то есть, src.remaining()
в то время, когда запись предпринимается. Где r 0, операция записи сразу завершается с результатом 0
не инициируя работу ввода-вывода.
Предположите, что последовательность байта длины n пишется, где 0 < n <= r. Эта последовательность байта будет передана от буферного запуска в, индексируют p, где p является позицией буфера в настоящее время, запись выполняется; индексированием последнего записанного байта будет p + n - 1. После завершения позиция буфера будет равна p + n; его предел не будет изменяться.
Буферы не безопасны для использования многократными параллельными потоками, таким образом, забота должна быть проявлена, чтобы не получить доступ к буферу, пока работа не завершилась.
В любое время может быть вызван этот метод. Некоторые типы канала, возможно, не позволяют больше чем одной записи быть выдающейся в любой момент времени. Если поток инициирует операцию записи прежде, чем предыдущая операция записи завершилась тогда a WritePendingException
будет брошен.
write
в интерфейсе AsynchronousByteChannel
src
- Буфер, от которого должны быть получены байтыattachment
- Объект присоединить к работе ввода-вывода; может быть null
handler
- Объект-обработчик завершенияWritePendingException
- Если канал не позволяет больше чем одной записи быть выдающейся, и предыдущая запись не завершиласьNotYetConnectedException
- Если этот канал еще не соединяетсяShutdownChannelGroupException
- Если группа канала завершиласьpublic abstract Future<Integer> write(ByteBuffer src)
AsynchronousByteChannel
Этот метод инициирует асинхронную операцию записи, чтобы записать последовательность байтов к этому каналу от данного буфера. Метод ведет себя точно тем же самым способом как write(ByteBuffer,Object,CompletionHandler)
метод за исключением того, что вместо того, чтобы определить обработчик завершения, этот метод возвращает a Future
представление результата на ожидании. Future
's get
метод возвращает число записанных байтов.
write
в интерфейсе AsynchronousByteChannel
src
- Буфер, от которого должны быть получены байтыWritePendingException
- Если канал не позволяет больше чем одной записи быть выдающейся, и предыдущая запись не завершиласьNotYetConnectedException
- Если этот канал еще не соединяетсяpublic abstract <A> void write(ByteBuffer[] srcs, int offset, int length, long timeout, TimeUnit unit, A attachment, CompletionHandler<Long,? super A> handler)
handler
параметр является обработчиком завершения, который вызывается, когда операция записи завершается (или сбои). Результатом, который передают к обработчику завершения, является число записанных байтов. Этот метод инициирует запись до r байтов к этому каналу, где r является общим количеством байтов, остающихся в указанной подпоследовательности данного буферного массива, то есть,
в настоящее время то, что запись предпринимается.srcs[offset].remaining() + srcs[offset+1].remaining() + ... + srcs[offset+length-1].remaining()
Предположите, что последовательность байта длины n пишется, где 0 < n <= r. До первых байтов srcs[offset].remaining() этой последовательности пишутся из буферного srcs[offset], до следующих байтов srcs[offset+1].remaining() пишутся из буферного srcs[offset+1], и т.д, пока вся последовательность байта не пишется. Так много байтов насколько возможно пишутся из каждого буфера, следовательно заключительная позиция каждого обновленного буфера, кроме последнее обновление буфера, как гарантируют, будет равна пределу того буфера. Базовая операционная система может наложить предел на число буферов, которые могут использоваться в работе ввода-вывода. Где число буферов (с остающимися байтами), превышает этот предел, тогда работа ввода-вывода выполняется с максимальным количеством буферов, позволенных операционной системой.
Если тайм-аут определяется, и тайм-аут протекает прежде, чем работа завершается тогда, это завершается с исключением InterruptedByTimeoutException
. Где тайм-аут происходит, и реализация не может гарантировать, что байты не были записаны, или не будут записаны каналу от данных буферов, тогда дальнейшие попытки записать в канал заставят неопределенное исключение на этапе выполнения быть брошенным.
srcs
- Буферы, от которых должны быть получены байтыoffset
- Смещение в пределах буферного массива первого буфера, от которого должны быть получены байты; должно быть неотрицательным и не больше чем srcs.length
length
- Максимальное количество буферов, которые будут получены доступ; должно быть неотрицательным и не больше чем srcs.length - offset
timeout
- Максимальное время для работы ввода-вывода, чтобы завершитьсяunit
- Единица измерения времени timeout
параметрattachment
- Объект присоединить к работе ввода-вывода; может быть null
handler
- Обработчик для того, чтобы использовать результатIndexOutOfBoundsException
- Если предварительные условия для offset
и length
параметр не встречаетсяWritePendingException
- Если операция записи уже происходит на этом каналеNotYetConnectedException
- Если этот канал еще не соединяетсяShutdownChannelGroupException
- Если группа канала завершилась
Для дальнейшей ссылки API и документации разработчика, см. Java Документация SE. Та документация содержит более подробные, предназначенные разработчиком описания, с концептуальными краткими обзорами, определениями сроков, обходных решений, и рабочих примеров кода.
Авторское право © 1993, 2013, Oracle и/или его филиалы. Все права защищены.
Проект сборка-b92