Compartir a través de


AsynchronousSocketChannel.Read Método

Definición

Sobrecargas

Read(ByteBuffer[], Int32, Int32, Int64, TimeUnit, Object, ICompletionHandler)

Lee una secuencia de bytes de este canal en una subsecuencia de los búferes especificados.

Read(ByteBuffer, Int64, TimeUnit, Object, ICompletionHandler)

Lee una secuencia de bytes de este canal en el búfer especificado.

Read(ByteBuffer)
Read(ByteBuffer, Object, ICompletionHandler)

Read(ByteBuffer[], Int32, Int32, Int64, TimeUnit, Object, ICompletionHandler)

Lee una secuencia de bytes de este canal en una subsecuencia de los búferes especificados.

[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

Parámetros

dsts
ByteBuffer[]

Búferes en los que se van a transferir bytes

offset
Int32

Desplazamiento dentro de la matriz de búfer del primer búfer en el que se van a transferir bytes; debe ser no negativo y no mayor que dsts.length

length
Int32

Número máximo de búferes a los que se va a acceder; debe ser no negativo y no mayor que dsts.length - offset

timeout
Int64

Tiempo máximo para que se complete la operación de E/S.

unit
TimeUnit

Unidad de tiempo del timeout argumento

attachment
Object

Objeto que se va a adjuntar a la operación de E/S; puede ser null

handler
ICompletionHandler

Controlador para consumir el resultado

Atributos

Comentarios

Lee una secuencia de bytes de este canal en una subsecuencia de los búferes especificados. Esta operación, a veces denominada <>lectura</em> de dispersión em, suele ser útil al implementar protocolos de red que agrupan datos en segmentos que constan de uno o varios encabezados de longitud fija seguidos de un cuerpo de longitud variable. El handler parámetro es un controlador de finalización que se invoca cuando se completa la operación de lectura (o se produce un error). El resultado pasado al controlador de finalización es el número de bytes leídos o -1 si no se puede leer ningún bytes porque el canal ha llegado al final del flujo.

Este método inicia una lectura de hasta r bytes de este canal, donde r es el número total de bytes restantes en la subsecuencia especificada de la matriz de búfer especificada, es decir,

<blockquote>

dsts[offset].remaining()
                + dsts[offset+1].remaining()
                + ... + dsts[offset+length-1].remaining()

</blockquote>

en el momento en que se intenta leer.

Supongamos que se lee una secuencia de bytes de longitud n , donde 0 < n <= r. Hasta los primeros dsts[offset].remaining() bytes de esta secuencia se transfieren al búfer dsts[offset], hasta los siguientes dsts[offset+1].remaining() bytes se transfieren al búfer dsts[offset+1], etc., hasta que toda la secuencia de bytes se transfiere a los búferes especificados. Tantos bytes como sea posible se transfieren a cada búfer, por lo que la posición final de cada búfer actualizado, excepto el último búfer actualizado, se garantiza que sea igual al límite de ese búfer. El sistema operativo subyacente puede imponer un límite en el número de búferes que se pueden usar en una operación de E/S. Cuando el número de búferes (con bytes restantes), supera este límite, la operación de E/S se realiza con el número máximo de búferes permitidos por el sistema operativo.

Si se especifica un tiempo de espera y el tiempo de espera transcurre antes de que se complete la operación, se completa con la excepción InterruptedByTimeoutException. Cuando se produce un tiempo de espera y la implementación no puede garantizar que no se hayan leído bytes o que no se lean desde el canal en los búferes especificados, los intentos adicionales de lectura desde el canal harán que se produzca una excepción en tiempo de ejecución no específica.

Documentación de Java para 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>).

Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el proyecto de código abierto de Android y se usan según los términos descritos en la licencia de atribución de Creative Commons 2.5.

Se aplica a

Read(ByteBuffer, Int64, TimeUnit, Object, ICompletionHandler)

Lee una secuencia de bytes de este canal en el búfer especificado.

[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

Parámetros

dst
ByteBuffer

Búfer en el que se van a transferir bytes

timeout
Int64

Tiempo máximo para que se complete la operación de E/S.

unit
TimeUnit

Unidad de tiempo del timeout argumento

attachment
Object

Objeto que se va a adjuntar a la operación de E/S; puede ser null

handler
ICompletionHandler

Controlador para consumir el resultado

Atributos

Comentarios

Lee una secuencia de bytes de este canal en el búfer especificado.

Este método inicia una operación de lectura asincrónica para leer una secuencia de bytes de este canal en el búfer especificado. El handler parámetro es un controlador de finalización que se invoca cuando se completa la operación de lectura (o se produce un error). El resultado pasado al controlador de finalización es el número de bytes leídos o -1 si no se puede leer ningún bytes porque el canal ha llegado al final del flujo.

Si se especifica un tiempo de espera y el tiempo de espera transcurre antes de que se complete la operación, la operación se completa con la excepción InterruptedByTimeoutException. Cuando se produce un tiempo de espera y la implementación no puede garantizar que no se hayan leído bytes o que no se lean desde el canal en el búfer especificado, los intentos adicionales de lectura del canal harán que se produzca una excepción en tiempo de ejecución no específica.

De lo contrario, este método funciona de la misma manera que el AsynchronousByteChannel#read(ByteBuffer,Object,CompletionHandler) método .

Documentación de Java para java.nio.channels.AsynchronousSocketChannel.read(java.nio.ByteBuffer, long, java.util.concurrent.TimeUnit, A, java.nio.channels.CompletionHandler<java.lang.Integer, ? super A>).

Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el proyecto de código abierto de Android y se usan según los términos descritos en la licencia de atribución de Creative Commons 2.5.

Se aplica a

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

Parámetros

Devoluciones

Implementaciones

Atributos

Comentarios

Documentación de Java para java.nio.channels.AsynchronousSocketChannel.read(java.nio.ByteBuffer).

Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el proyecto de código abierto de Android y se usan según los términos descritos en la licencia de atribución de Creative Commons 2.5.

Se aplica a

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

Parámetros

attachment
Object

Implementaciones

Atributos

Comentarios

Documentación de Java para java.nio.channels.AsynchronousSocketChannel.read(java.nio.ByteBuffer, A, java.nio.channels.CompletionHandler<java.lang.Integer, ? super A>).

Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el proyecto de código abierto de Android y se usan según los términos descritos en la licencia de atribución de Creative Commons 2.5.

Se aplica a