Condividi tramite


AsynchronousSocketChannel.Read Metodo

Definizione

Overload

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

Legge una sequenza di byte da questo canale in una sottosequenza dei buffer specificati.

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

Legge una sequenza di byte da questo canale nel buffer specificato.

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

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

Legge una sequenza di byte da questo canale in una sottosequenza dei buffer specificati.

[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

Parametri

dsts
ByteBuffer[]

Buffer in cui devono essere trasferiti i byte

offset
Int32

Offset all'interno della matrice di buffer del primo buffer in cui devono essere trasferiti i byte; deve essere non negativo e non maggiore di dsts.length

length
Int32

Numero massimo di buffer a cui accedere; deve essere non negativo e non maggiore di dsts.length - offset

timeout
Int64

Tempo massimo per il completamento dell'operazione di I/O

unit
TimeUnit

Unità temporale dell'argomento timeout

attachment
Object

Oggetto da associare all'operazione di I/O; può essere null

handler
ICompletionHandler

Gestore per l'utilizzo del risultato

Attributi

Commenti

Legge una sequenza di byte da questo canale in una sottosequenza dei buffer specificati. Questa operazione, talvolta detta <lettura></em> a dispersione em, è spesso utile quando si implementano protocolli di rete che raggruppano i dati in segmenti costituiti da una o più intestazioni a lunghezza fissa seguite da un corpo a lunghezza variabile. Il handler parametro è un gestore di completamento che viene richiamato quando l'operazione di lettura viene completata (o ha esito negativo). Il risultato passato al gestore di completamento è il numero di byte letti o -1 se non è possibile leggere byte perché il canale ha raggiunto la fine del flusso.

Questo metodo avvia una lettura di fino a r byte da questo canale, dove r è il numero totale di byte rimanenti nella sottosequenza specificata della matrice di buffer specificata, ovvero

<blockquote>

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

</blockquote>

al momento del tentativo di lettura.

Si supponga che venga letta una sequenza di byte di lunghezza n , dove 0 < n <= r. Fino ai primi dsts[offset].remaining() byte di questa sequenza vengono trasferiti nel buffer dsts[offset], fino ai byte successivi dsts[offset+1].remaining() vengono trasferiti nel buffer dsts[offset+1]e così via, fino a quando l'intera sequenza di byte non viene trasferita nei buffer specificati. Il maggior numero possibile di byte vengono trasferiti in ogni buffer, quindi la posizione finale di ogni buffer aggiornato, ad eccezione dell'ultimo buffer aggiornato, è garantito che sia uguale al limite del buffer. Il sistema operativo sottostante può imporre un limite al numero di buffer che possono essere usati in un'operazione di I/O. Se il numero di buffer (con byte rimanenti), supera questo limite, l'operazione di I/O viene eseguita con il numero massimo di buffer consentiti dal sistema operativo.

Se viene specificato un timeout e il timeout viene trascorso prima del completamento dell'operazione, viene completato con l'eccezione InterruptedByTimeoutException. Quando si verifica un timeout e l'implementazione non garantisce che i byte non siano stati letti o non vengano letti dal canale nei buffer specificati, altri tentativi di lettura dal canale causeranno la generazione di un'eccezione di runtime non specifica.

Documentazione java per 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>).

Le parti di questa pagina sono modifiche basate sul lavoro creato e condiviso dal progetto Open Source Android e usato in base ai termini descritti nella licenza Creative Commons 2.5 Attribuzione.

Si applica a

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

Legge una sequenza di byte da questo canale nel buffer specificato.

[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

Parametri

dst
ByteBuffer

Buffer in cui devono essere trasferiti i byte

timeout
Int64

Tempo massimo per il completamento dell'operazione di I/O

unit
TimeUnit

Unità temporale dell'argomento timeout

attachment
Object

Oggetto da associare all'operazione di I/O; può essere null

handler
ICompletionHandler

Gestore per l'utilizzo del risultato

Attributi

Commenti

Legge una sequenza di byte da questo canale nel buffer specificato.

Questo metodo avvia un'operazione di lettura asincrona per leggere una sequenza di byte da questo canale nel buffer specificato. Il handler parametro è un gestore di completamento che viene richiamato quando l'operazione di lettura viene completata (o ha esito negativo). Il risultato passato al gestore di completamento è il numero di byte letti o -1 se non è possibile leggere byte perché il canale ha raggiunto la fine del flusso.

Se viene specificato un timeout e il timeout è trascorso prima del completamento dell'operazione, l'operazione viene completata con l'eccezione InterruptedByTimeoutException. Quando si verifica un timeout e l'implementazione non può garantire che i byte non siano stati letti o non vengano letti dal canale nel buffer specificato, altri tentativi di lettura dal canale causeranno la generazione di un'eccezione di runtime non specifica.

In caso contrario, questo metodo funziona allo stesso modo del AsynchronousByteChannel#read(ByteBuffer,Object,CompletionHandler) metodo .

Documentazione java per java.nio.channels.AsynchronousSocketChannel.read(java.nio.ByteBuffer, long, java.util.concurrent.TimeUnit, A, java.nio.channels.CompletionHandler<java.lang.Integer, ? super A>).

Le parti di questa pagina sono modifiche basate sul lavoro creato e condiviso dal progetto Open Source Android e usato in base ai termini descritti nella licenza Creative Commons 2.5 Attribuzione.

Si applica 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

Parametri

Restituisce

Implementazioni

Attributi

Commenti

Documentazione java per java.nio.channels.AsynchronousSocketChannel.read(java.nio.ByteBuffer).

Le parti di questa pagina sono modifiche basate sul lavoro creato e condiviso dal progetto Open Source Android e usato in base ai termini descritti nella licenza Creative Commons 2.5 Attribuzione.

Si applica 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

Parametri

attachment
Object

Implementazioni

Attributi

Commenti

Documentazione java per java.nio.channels.AsynchronousSocketChannel.read(java.nio.ByteBuffer, A, java.nio.channels.CompletionHandler<java.lang.Integer, ? super A>).

Le parti di questa pagina sono modifiche basate sul lavoro creato e condiviso dal progetto Open Source Android e usato in base ai termini descritti nella licenza Creative Commons 2.5 Attribuzione.

Si applica a