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

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

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

Параметры

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

Реализации

Атрибуты

Комментарии

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

Параметры

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 License.

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