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
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 conclusão da operação de E/S
- 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 <em>scattering read</em>, 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 é chamado 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 byte pôde ser lido porque o canal atingiu o fim do fluxo.
Esse método inicia uma leitura de até r bytes desse canal, onde 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 é lida, onde 0
<
n <=
Não. 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 no 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 transcorrer 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, novas tentativas de leitura do canal farão com que uma exceção de tempo de execução inespecífica seja lançada.
Partes desta página são modificações baseadas no trabalho criado e compartilhado pelo Android Open Source Project e usado de acordo com os termos descritos na Creative Commons 2.5 Attribution License.
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 conclusão da operação de E/S
- 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 para o buffer fornecido. O handler
parâmetro é um manipulador de conclusão que é chamado 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 byte pôde ser lido porque o canal atingiu o fim do fluxo.
Se um tempo limite for especificado e o tempo limite transcorrer antes da conclusão da operação, a operação será concluída com a exceção InterruptedByTimeoutException
. Quando ocorrer um tempo limite e a implementação não puder 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 tempo de execução inespecífica seja lançada.
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 Android Open Source Project e usado de acordo com os termos descritos na Creative Commons 2.5 Attribution License.
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
Documentação Java para java.nio.channels.AsynchronousSocketChannel.read(java.nio.ByteBuffer)
.
Partes desta página são modificações baseadas no trabalho criado e compartilhado pelo Android Open Source Project e usado de acordo com os termos descritos na Creative Commons 2.5 Attribution License.
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 Android Open Source Project e usado de acordo com os termos descritos na Creative Commons 2.5 Attribution License.