AsynchronousSocketChannel.Read Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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.
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 .
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
- dst
- ByteBuffer
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
- dst
- ByteBuffer
- attachment
- Object
- handler
- ICompletionHandler
Implementaciones
- Atributos
Comentarios
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.