Compartilhar via


AsynchronousSocketChannel.Read Método

Definição

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.

Documentação Java para 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>).

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.

Documentação Java para java.nio.channels.AsynchronousSocketChannel.read(java.nio.ByteBuffer, long, java.util.concurrent.TimeUnit, A, java.nio.channels.CompletionHandler<java.lang.Integer, ? super A>).

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

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

attachment
Object

Implementações

Atributos

Comentários

Documentação Java para java.nio.channels.AsynchronousSocketChannel.read(java.nio.ByteBuffer, A, java.nio.channels.CompletionHandler<java.lang.Integer, ? super A>).

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