AsynchronousSocketChannel.Read Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Перегрузки
Read(ByteBuffer[], Int32, Int32, Int64, TimeUnit, Object, ICompletionHandler) |
Считывает последовательность байтов из этого канала в подсезону заданных буферов. |
Read(ByteBuffer, Int64, TimeUnit, Object, ICompletionHandler) |
Считывает последовательность байтов из этого канала в заданный буфер. |
Read(ByteBuffer) | |
Read(ByteBuffer, Object, ICompletionHandler) |
Read(ByteBuffer[], Int32, Int32, Int64, TimeUnit, Object, ICompletionHandler)
Считывает последовательность байтов из этого канала в подсезону заданных буферов.
[Android.Runtime.Register("read", "([Ljava/nio/ByteBuffer;IIJLjava/util/concurrent/TimeUnit;Ljava/lang/Object;Ljava/nio/channels/CompletionHandler;)V", "GetRead_arrayLjava_nio_ByteBuffer_IIJLjava_util_concurrent_TimeUnit_Ljava_lang_Object_Ljava_nio_channels_CompletionHandler_Handler", ApiSince=26)]
[Java.Interop.JavaTypeParameters(new System.String[] { "A" })]
public abstract void Read (Java.Nio.ByteBuffer[]? dsts, int offset, int length, long timeout, Java.Util.Concurrent.TimeUnit? unit, Java.Lang.Object? attachment, Java.Nio.Channels.ICompletionHandler? handler);
[<Android.Runtime.Register("read", "([Ljava/nio/ByteBuffer;IIJLjava/util/concurrent/TimeUnit;Ljava/lang/Object;Ljava/nio/channels/CompletionHandler;)V", "GetRead_arrayLjava_nio_ByteBuffer_IIJLjava_util_concurrent_TimeUnit_Ljava_lang_Object_Ljava_nio_channels_CompletionHandler_Handler", ApiSince=26)>]
[<Java.Interop.JavaTypeParameters(new System.String[] { "A" })>]
abstract member Read : Java.Nio.ByteBuffer[] * int * int * int64 * Java.Util.Concurrent.TimeUnit * Java.Lang.Object * Java.Nio.Channels.ICompletionHandler -> unit
Параметры
- dsts
- ByteBuffer[]
Буферы, в которые передаются байты
- offset
- Int32
Смещение в массиве буферов первого буфера, в который необходимо передать байты; не должен быть отрицательным и не должен превышать dsts.length
- length
- Int32
Максимальное число буферов для доступа; не должен быть отрицательным и не должен превышать dsts.length - offset
- timeout
- Int64
Максимальное время выполнения операции ввода-вывода
- unit
- TimeUnit
Единица времени аргумента timeout
- attachment
- Object
Объект, присоединяемый к операции ввода-вывода; может быть null
- handler
- ICompletionHandler
Обработчик для использования результата
- Атрибуты
Комментарии
Считывает последовательность байтов из этого канала в подсезону заданных буферов. Эта операция, иногда называемая <эм-точечным>чтением< и em>, часто полезна при реализации сетевых протоколов, которые группирует данные в сегменты, состоящие из одного или нескольких заголовков фиксированной длины, за которыми следует тело переменной длины. Параметр handler
является обработчиком завершения, который вызывается при завершении (или сбое) операции чтения. Результатом, передаваемым обработчику завершения, является число прочитанных байтов или -1
значение, если байты не могут быть прочитаны, так как канал достиг конца потока.
Этот метод инициирует чтение до r байтов из этого канала, где r — это общее число байтов, оставшихся в указанной подсепени заданного буферного массива, т. е.
<blockquote>
dsts[offset].remaining()
+ dsts[offset+1].remaining()
+ ... + dsts[offset+length-1].remaining()
</blockquote>
в момент попытки чтения.
Предположим, что считывается последовательность байтов длины n , где 0
<
n <=
r. До первых dsts[offset].remaining()
байтов этой последовательности передаются в буфер dsts[offset]
, до следующих dsts[offset+1].remaining()
байтов передаются в буфер dsts[offset+1]
и т. д., пока вся последовательность байтов не будет передана в заданные буферы. В каждый буфер передается как можно больше байтов, поэтому окончательная позиция каждого обновленного буфера, за исключением последнего обновленного буфера, гарантированно будет равна ограничению этого буфера. Базовая операционная система может налагать ограничение на количество буферов, которые могут использоваться в операции ввода-вывода. Если количество буферов (с оставшимися байтами) превышает это ограничение, операция ввода-вывода выполняется с максимальным количеством буферов, разрешенным операционной системой.
Если задано время ожидания, а время ожидания истекает до завершения операции, оно завершается с исключением InterruptedByTimeoutException
. Если истекло время ожидания и реализация не может гарантировать, что байты не были прочитаны или не будут считаны из канала в заданные буферы, дальнейшие попытки чтения из канала вызовут неопределенное исключение среды выполнения.
Части этой страницы являются изменениями, основанными на работе, созданной и совместно используемой проектом Android и используемой в соответствии с условиями, Creative Commons 2.5 Attribution License.
Применяется к
Read(ByteBuffer, Int64, TimeUnit, Object, ICompletionHandler)
Считывает последовательность байтов из этого канала в заданный буфер.
[Android.Runtime.Register("read", "(Ljava/nio/ByteBuffer;JLjava/util/concurrent/TimeUnit;Ljava/lang/Object;Ljava/nio/channels/CompletionHandler;)V", "GetRead_Ljava_nio_ByteBuffer_JLjava_util_concurrent_TimeUnit_Ljava_lang_Object_Ljava_nio_channels_CompletionHandler_Handler", ApiSince=26)]
[Java.Interop.JavaTypeParameters(new System.String[] { "A" })]
public abstract void Read (Java.Nio.ByteBuffer? dst, long timeout, Java.Util.Concurrent.TimeUnit? unit, Java.Lang.Object? attachment, Java.Nio.Channels.ICompletionHandler? handler);
[<Android.Runtime.Register("read", "(Ljava/nio/ByteBuffer;JLjava/util/concurrent/TimeUnit;Ljava/lang/Object;Ljava/nio/channels/CompletionHandler;)V", "GetRead_Ljava_nio_ByteBuffer_JLjava_util_concurrent_TimeUnit_Ljava_lang_Object_Ljava_nio_channels_CompletionHandler_Handler", ApiSince=26)>]
[<Java.Interop.JavaTypeParameters(new System.String[] { "A" })>]
abstract member Read : Java.Nio.ByteBuffer * int64 * Java.Util.Concurrent.TimeUnit * Java.Lang.Object * Java.Nio.Channels.ICompletionHandler -> unit
Параметры
- dst
- ByteBuffer
Буфер, в который передаются байты
- timeout
- Int64
Максимальное время выполнения операции ввода-вывода
- unit
- TimeUnit
Единица времени аргумента timeout
- attachment
- Object
Объект, присоединяемый к операции ввода-вывода; может быть null
- handler
- ICompletionHandler
Обработчик для использования результата
- Атрибуты
Комментарии
Считывает последовательность байтов из этого канала в заданный буфер.
Этот метод инициирует асинхронную операцию чтения для чтения последовательности байтов из этого канала в заданный буфер. Параметр handler
является обработчиком завершения, который вызывается при завершении (или сбое) операции чтения. Результатом, передаваемым обработчику завершения, является число прочитанных байтов или -1
значение, если байты не могут быть прочитаны, так как канал достиг конца потока.
Если задано время ожидания и время ожидания истекает до завершения операции, операция завершается с исключением InterruptedByTimeoutException
. Если истекло время ожидания и реализация не может гарантировать, что байты не были прочитаны или не будут считаны из канала в заданный буфер, дальнейшие попытки чтения из канала вызовут неопределенное исключение среды выполнения.
В противном случае этот метод работает так же, как и AsynchronousByteChannel#read(ByteBuffer,Object,CompletionHandler)
метод .
Части этой страницы являются изменениями, основанными на работе, созданной и совместно используемой проектом Android и используемой в соответствии с условиями, Creative Commons 2.5 Attribution License.
Применяется к
Read(ByteBuffer)
[Android.Runtime.Register("read", "(Ljava/nio/ByteBuffer;)Ljava/util/concurrent/Future;", "GetRead_Ljava_nio_ByteBuffer_Handler", ApiSince=26)]
public abstract Java.Util.Concurrent.IFuture? Read (Java.Nio.ByteBuffer? dst);
[<Android.Runtime.Register("read", "(Ljava/nio/ByteBuffer;)Ljava/util/concurrent/Future;", "GetRead_Ljava_nio_ByteBuffer_Handler", ApiSince=26)>]
abstract member Read : Java.Nio.ByteBuffer -> Java.Util.Concurrent.IFuture
Параметры
- dst
- ByteBuffer
Возвращаемое значение
Реализации
- Атрибуты
Комментарии
Документация по Java для java.nio.channels.AsynchronousSocketChannel.read(java.nio.ByteBuffer)
.
Части этой страницы являются изменениями, основанными на работе, созданной и совместно используемой проектом Android и используемой в соответствии с условиями, Creative Commons 2.5 Attribution License.
Применяется к
Read(ByteBuffer, Object, ICompletionHandler)
[Android.Runtime.Register("read", "(Ljava/nio/ByteBuffer;Ljava/lang/Object;Ljava/nio/channels/CompletionHandler;)V", "", ApiSince=26)]
[Java.Interop.JavaTypeParameters(new System.String[] { "A" })]
public void Read (Java.Nio.ByteBuffer? dst, Java.Lang.Object? attachment, Java.Nio.Channels.ICompletionHandler? handler);
[<Android.Runtime.Register("read", "(Ljava/nio/ByteBuffer;Ljava/lang/Object;Ljava/nio/channels/CompletionHandler;)V", "", ApiSince=26)>]
[<Java.Interop.JavaTypeParameters(new System.String[] { "A" })>]
abstract member Read : Java.Nio.ByteBuffer * Java.Lang.Object * Java.Nio.Channels.ICompletionHandler -> unit
override this.Read : Java.Nio.ByteBuffer * Java.Lang.Object * Java.Nio.Channels.ICompletionHandler -> unit
Параметры
- dst
- ByteBuffer
- attachment
- Object
- handler
- ICompletionHandler
Реализации
- Атрибуты
Комментарии
Части этой страницы являются изменениями, основанными на работе, созданной и совместно используемой проектом Android и используемой в соответствии с условиями, Creative Commons 2.5 Attribution License.