Поделиться через


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. Когда происходит время ожидания, и реализация не может гарантировать, что байты не были прочитаны или не будут считываться из канала в заданные буферы, а затем дальнейшие попытки чтения из канала приведет к возникновению неопределенного исключения среды выполнения.

Документация по Java для java.nio.channels.AsynchronousSocketChannel.read(java.nio.ByteBuffer[], int, int, long, java.util.concurrent.TimeUnit, A, java.nio.channels.CompletionHandler<java.lang.Long, ? super A>).

Части этой страницы — это изменения на основе работы, созданной и общей проектом с открытым исходным кодом 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) и метод.

Документация по Java для java.nio.channels.AsynchronousSocketChannel.read(java.nio.ByteBuffer, long, java.util.concurrent.TimeUnit, A, java.nio.channels.CompletionHandler<java.lang.Integer, ? super A>).

Части этой страницы — это изменения на основе работы, созданной и общей проектом с открытым исходным кодом 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

Параметры

Возвращаемое значение

Реализации

Атрибуты

Комментарии

Документация по 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

Параметры

attachment
Object

Реализации

Атрибуты

Комментарии

Документация по Java для java.nio.channels.AsynchronousSocketChannel.read(java.nio.ByteBuffer, A, java.nio.channels.CompletionHandler<java.lang.Integer, ? super A>).

Части этой страницы — это изменения на основе работы, созданной и общей проектом с открытым исходным кодом Android и используемой в соответствии с условиями, описанными в лицензии Creative Commons 2.5 Attribution.

Применяется к