AsynchronousSocketChannel.Read Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Sobrecargas
| Nome | Description |
|---|---|
| Read(ByteBuffer[], Int32, Int32, Int64, TimeUnit, Object, ICompletionHandler) |
Lê uma sequência de bytes desse canal em uma subsequência dos buffers fornecidos. |
| Read(ByteBuffer, Int64, TimeUnit, Object, ICompletionHandler) |
Lê uma sequência de bytes desse canal no buffer fornecido. |
| Read(ByteBuffer) | |
| Read(ByteBuffer, Object, ICompletionHandler) |
Read(ByteBuffer[], Int32, Int32, Int64, TimeUnit, Object, ICompletionHandler)
Lê uma sequência de bytes desse canal em uma subsequência dos buffers fornecidos.
[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[]
Os buffers para os quais os bytes devem ser transferidos
- offset
- Int32
O deslocamento dentro da matriz de buffer do primeiro buffer para o qual os bytes devem ser transferidos; deve ser não negativo e não maior que dsts.length
- length
- Int32
O número máximo de buffers a serem acessados; deve ser não negativo e não maior que dsts.length - offset
- timeout
- Int64
O tempo máximo para a operação de E/S ser concluída
- unit
- TimeUnit
A unidade de tempo do timeout argumento
- attachment
- Object
O objeto a ser anexado à operação de E/S; pode ser null
- handler
- ICompletionHandler
O manipulador para consumir o resultado
- Atributos
Comentários
Lê uma sequência de bytes desse canal em uma subsequência dos buffers fornecidos. Essa operação, às vezes chamada de <>leitura</em> dispersão, geralmente é útil ao implementar protocolos de rede que agrupam dados em segmentos que consistem em um ou mais cabeçalhos de comprimento fixo seguidos por um corpo de comprimento variável. O handler parâmetro é um manipulador de conclusão que é invocado quando a operação de leitura é concluída (ou falha). O resultado passado para o manipulador de conclusão é o número de bytes lidos ou -1 se nenhum bytes puder ser lido porque o canal atingiu o fim do fluxo.
Esse método inicia uma leitura de até r bytes deste canal, em que r é o número total de bytes restantes na subsequência especificada da matriz de buffer fornecida, ou seja,
<blockquote>
dsts[offset].remaining()
+ dsts[offset+1].remaining()
+ ... + dsts[offset+length-1].remaining()
</blockquote>
no momento em que a leitura é tentada.
Suponha que uma sequência de bytes de comprimento n seja lida, em 0que < n <= r. Até os primeiros dsts[offset].remaining() bytes dessa sequência são transferidos para o buffer dsts[offset], até os próximos dsts[offset+1].remaining() bytes são transferidos para o buffer dsts[offset+1]e assim por diante, até que toda a sequência de bytes seja transferida para os buffers fornecidos. O maior número possível de bytes é transferido para cada buffer, portanto, a posição final de cada buffer atualizado, exceto o último buffer atualizado, é garantida como igual ao limite desse buffer. O sistema operacional subjacente pode impor um limite ao número de buffers que podem ser usados em uma operação de E/S. Quando o número de buffers (com bytes restantes), excede esse limite, a operação de E/S é executada com o número máximo de buffers permitido pelo sistema operacional.
Se um tempo limite for especificado e o tempo limite passar antes da conclusão da operação, ele será concluído com a exceção InterruptedByTimeoutException. Quando ocorre um tempo limite e a implementação não pode garantir que os bytes não foram lidos ou não serão lidos do canal para os buffers fornecidos, outras tentativas de leitura do canal farão com que uma exceção de runtime não especificada seja gerada.
Partes desta página são modificações baseadas no trabalho criado e compartilhado pelo Project Open Source do Open Source e usadas de acordo com os termos descritos na Creative Commons 2.5.
Aplica-se a
Read(ByteBuffer, Int64, TimeUnit, Object, ICompletionHandler)
Lê uma sequência de bytes desse canal no buffer fornecido.
[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
O buffer para o qual os bytes devem ser transferidos
- timeout
- Int64
O tempo máximo para a operação de E/S ser concluída
- unit
- TimeUnit
A unidade de tempo do timeout argumento
- attachment
- Object
O objeto a ser anexado à operação de E/S; pode ser null
- handler
- ICompletionHandler
O manipulador para consumir o resultado
- Atributos
Comentários
Lê uma sequência de bytes desse canal no buffer fornecido.
Esse método inicia uma operação de leitura assíncrona para ler uma sequência de bytes desse canal no buffer fornecido. O handler parâmetro é um manipulador de conclusão que é invocado quando a operação de leitura é concluída (ou falha). O resultado passado para o manipulador de conclusão é o número de bytes lidos ou -1 se nenhum bytes puder ser lido porque o canal atingiu o fim do fluxo.
Se um tempo limite for especificado e o tempo limite for decorrido antes da conclusão da operação, a operação será concluída com a exceção InterruptedByTimeoutException. Quando ocorre um tempo limite e a implementação não pode garantir que os bytes não foram lidos ou não serão lidos do canal para o buffer fornecido, outras tentativas de leitura do canal farão com que uma exceção de runtime não especificada seja gerada.
Caso contrário, esse método funciona da mesma maneira que o AsynchronousByteChannel#read(ByteBuffer,Object,CompletionHandler) método.
Partes desta página são modificações baseadas no trabalho criado e compartilhado pelo Project Open Source do Open Source e usadas de acordo com os termos descritos na Creative Commons 2.5.
Aplica-se 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
Retornos
Implementações
- Atributos
Comentários
Java documentação para java.nio.channels.AsynchronousSocketChannel.read(java.nio.ByteBuffer).
Partes desta página são modificações baseadas no trabalho criado e compartilhado pelo Project Open Source do Open Source e usadas de acordo com os termos descritos na Creative Commons 2.5.
Aplica-se 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
Implementações
- Atributos
Comentários
Partes desta página são modificações baseadas no trabalho criado e compartilhado pelo Project Open Source do Open Source e usadas de acordo com os termos descritos na Creative Commons 2.5.