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
Обработчик для использования результата
- Атрибуты
Комментарии
Считывает последовательность байтов из этого канала в подсезону заданных буферов. Эта операция, иногда называемая>< точечным чтением< и эм>, часто полезна при реализации сетевых протоколов, которые группирует данные в сегменты, состоящие из одного или нескольких заголовков фиксированной длины, за которым следует тело переменной длины. Параметр handler
— это обработчик завершения, который вызывается при завершении операции чтения (или завершается сбоем). Результатом, переданным обработчику завершения, является число байтов, считываемых или -1
если байты не могут быть прочитаны, так как канал достиг конца потока.
Этот метод инициирует чтение до байтов из этого канала, где r — общее число байтов, оставшихся в заданном подсезоне заданного буферного массива, т. е.
<blockquote>
dsts[offset].remaining()
+ dsts[offset+1].remaining()
+ ... + dsts[offset+length-1].remaining()
</blockquote>
на данный момент, когда выполняется попытка чтения.
Предположим, что считывается последовательность байтов длины n , где 0
><
>n><=
>r. До первых dsts[offset].remaining()
байтов этой последовательности передаются в буфер, до следующих dsts[offset+1].remaining()
байтов передаются в буфер dsts[offset]
dsts[offset+1]
и т. д., пока вся последовательность байтов не будет передана в заданные буферы. Как можно больше байтов передаются в каждый буфер, поэтому окончательное положение каждого обновленного буфера, за исключением последнего обновленного буфера, гарантированно равно ограничению этого буфера. Базовая операционная система может наложить ограничение на количество буферов, которые могут использоваться в операции ввода-вывода. Где число буферов (с оставшимися байтами), превышает это ограничение, то операция ввода-вывода выполняется с максимальным количеством буферов, разрешенных операционной системой.
Если задано время ожидания и истекает время ожидания, прежде чем операция завершится, она завершается с исключением InterruptedByTimeoutException
. Когда происходит время ожидания, и реализация не может гарантировать, что байты не были прочитаны или не будут считываться из канала в заданные буферы, а затем дальнейшие попытки чтения из канала приведет к возникновению неопределенного исключения среды выполнения.
Части этой страницы — это изменения на основе работы, созданной и общей проектом с открытым исходным кодом Android и используемой в соответствии с условиями, описанными в лицензии Creative Commons 2.5 Attribution.
Применяется к
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.
Применяется к
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.
Применяется к
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.