Freigeben über


AsynchronousSocketChannel.Read Methode

Definition

Überlädt

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

Liest eine Abfolge von Bytes aus diesem Kanal in eine Untermenge der angegebenen Puffer.

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

Liest eine Abfolge von Bytes aus diesem Kanal in den angegebenen Puffer.

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

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

Liest eine Abfolge von Bytes aus diesem Kanal in eine Untermenge der angegebenen Puffer.

[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

Parameter

dsts
ByteBuffer[]

Die Puffer, in die Bytes übertragen werden sollen

offset
Int32

Der Offset innerhalb des Pufferarrays des ersten Puffers, in den Bytes übertragen werden sollen; darf nicht negativ und nicht größer als dsts.length

length
Int32

Die maximale Anzahl von Puffern, auf die zugegriffen werden soll; darf nicht negativ und nicht größer als dsts.length - offset

timeout
Int64

Die maximale Zeit für den Abschluss des E/A-Vorgangs

unit
TimeUnit

Die Zeiteinheit des timeout Arguments

attachment
Object

Das Objekt, das an den E/A-Vorgang angefügt werden soll; kann sein null

handler
ICompletionHandler

Der Handler für die Verwendung des Ergebnisses

Attribute

Hinweise

Liest eine Abfolge von Bytes aus diesem Kanal in eine Untermenge der angegebenen Puffer. Dieser Vorgang, der manchmal als <Em-Punkt-Lese><-/Em> bezeichnet wird, ist häufig nützlich, wenn Netzwerkprotokolle implementiert werden, die Daten in Segmente gruppieren, die aus einer oder mehreren Headern mit fester Länge bestehen, gefolgt von einem Textkörper mit variabler Länge. Der handler Parameter ist ein Vervollständigungshandler, der aufgerufen wird, wenn der Lesevorgang abgeschlossen ist (oder ein Fehler auftritt). Das an den Abschlusshandler übergebene Ergebnis ist die Anzahl der gelesenen Bytes oder -1 wenn keine Bytes gelesen werden konnten, da der Kanal das Ende des Datenstroms erreicht hat.

Diese Methode initiiert einen Lesevorgang von bis zu r Bytes aus diesem Kanal, wobei r die Gesamtanzahl der Bytes ist, die in der angegebenen Untermenge des angegebenen Pufferarrays verbleiben, d. h.

<Blockquote>

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

</blockquote>

zu dem Zeitpunkt, zu dem der Lesevorgang versucht wird.

Angenommen, eine Bytesequenz der Länge n wird gelesen, wobei 0 < n <= r. Bis zu den ersten dsts[offset].remaining() Byte dieser Sequenz werden in Puffer dsts[offset]übertragen, bis zu den nächsten dsts[offset+1].remaining() Bytes in Puffer dsts[offset+1]übertragen und so weiter, bis die gesamte Bytesequenz in die angegebenen Puffer übertragen wird. So viele Bytes wie möglich werden in jeden Puffer übertragen, daher ist die endgültige Position jedes aktualisierten Puffers, mit Ausnahme des letzten aktualisierten Puffers, garantiert gleich dem Grenzwert dieses Puffers. Das zugrunde liegende Betriebssystem kann eine Beschränkung der Anzahl von Puffern auferlegen, die in einem E/A-Vorgang verwendet werden können. Wenn die Anzahl der Puffer (mit verbleibenden Bytes) diesen Grenzwert überschreitet, wird der E/A-Vorgang mit der maximalen Anzahl von Puffern ausgeführt, die vom Betriebssystem zulässig sind.

Wenn ein Timeout angegeben ist und das Timeout vor Abschluss des Vorgangs verstrichen ist, wird es mit der Ausnahme InterruptedByTimeoutExceptionabgeschlossen. Wenn ein Timeout auftritt, und die Implementierung kann nicht garantieren, dass Bytes nicht gelesen wurden oder nicht aus dem Kanal in die angegebenen Puffer gelesen werden, dann führen weitere Versuche zum Lesen aus dem Kanal zu einer unspezifischen Laufzeitausnahme.

Java-Dokumentation für 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>).

Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die vom Android Open Source-Projekt erstellt und freigegeben werden und gemäß den in der Creative Commons 2.5 Attribution License beschriebenen Begriffen verwendet werden.

Gilt für:

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

Liest eine Abfolge von Bytes aus diesem Kanal in den angegebenen Puffer.

[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

Parameter

dst
ByteBuffer

Der Puffer, in den Bytes übertragen werden sollen

timeout
Int64

Die maximale Zeit für den Abschluss des E/A-Vorgangs

unit
TimeUnit

Die Zeiteinheit des timeout Arguments

attachment
Object

Das Objekt, das an den E/A-Vorgang angefügt werden soll; kann sein null

handler
ICompletionHandler

Der Handler für die Verwendung des Ergebnisses

Attribute

Hinweise

Liest eine Abfolge von Bytes aus diesem Kanal in den angegebenen Puffer.

Diese Methode initiiert einen asynchronen Lesevorgang, um eine Abfolge von Bytes aus diesem Kanal in den angegebenen Puffer zu lesen. Der handler Parameter ist ein Vervollständigungshandler, der aufgerufen wird, wenn der Lesevorgang abgeschlossen ist (oder ein Fehler auftritt). Das an den Abschlusshandler übergebene Ergebnis ist die Anzahl der gelesenen Bytes oder -1 wenn keine Bytes gelesen werden konnten, da der Kanal das Ende des Datenstroms erreicht hat.

Wenn ein Timeout angegeben ist und das Timeout vor Abschluss des Vorgangs verstrichen ist, wird der Vorgang mit der Ausnahme InterruptedByTimeoutExceptionabgeschlossen. Wenn ein Timeout auftritt, und die Implementierung kann nicht garantieren, dass Bytes nicht gelesen wurden oder nicht aus dem Kanal in den angegebenen Puffer gelesen werden, dann führen weitere Versuche zum Lesen aus dem Kanal zu einer unspezifischen Laufzeitausnahme.

Andernfalls funktioniert diese Methode auf die gleiche Weise wie die AsynchronousByteChannel#read(ByteBuffer,Object,CompletionHandler) Methode.

Java-Dokumentation für java.nio.channels.AsynchronousSocketChannel.read(java.nio.ByteBuffer, long, java.util.concurrent.TimeUnit, A, java.nio.channels.CompletionHandler<java.lang.Integer, ? super A>).

Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die vom Android Open Source-Projekt erstellt und freigegeben werden und gemäß den in der Creative Commons 2.5 Attribution License beschriebenen Begriffen verwendet werden.

Gilt für:

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

Parameter

Gibt zurück

Implementiert

Attribute

Hinweise

Java-Dokumentation für java.nio.channels.AsynchronousSocketChannel.read(java.nio.ByteBuffer).

Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die vom Android Open Source-Projekt erstellt und freigegeben werden und gemäß den in der Creative Commons 2.5 Attribution License beschriebenen Begriffen verwendet werden.

Gilt für:

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

Parameter

attachment
Object

Implementiert

Attribute

Hinweise

Java-Dokumentation für java.nio.channels.AsynchronousSocketChannel.read(java.nio.ByteBuffer, A, java.nio.channels.CompletionHandler<java.lang.Integer, ? super A>).

Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die vom Android Open Source-Projekt erstellt und freigegeben werden und gemäß den in der Creative Commons 2.5 Attribution License beschriebenen Begriffen verwendet werden.

Gilt für: