Socket.ReceiveAsync 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
ReceiveAsync(ArraySegment<Byte>) |
Recebe os dados de um soquete conectado. |
ReceiveAsync(IList<ArraySegment<Byte>>) |
Recebe os dados de um soquete conectado. |
ReceiveAsync(SocketAsyncEventArgs) |
Inicia uma solicitação assíncrona para receber dados de um objeto Socket conectado. |
ReceiveAsync(ArraySegment<Byte>, SocketFlags) |
Recebe os dados de um soquete conectado. |
ReceiveAsync(IList<ArraySegment<Byte>>, SocketFlags) |
Recebe os dados de um soquete conectado. |
ReceiveAsync(Memory<Byte>, CancellationToken) |
Recebe os dados de um soquete conectado. |
ReceiveAsync(Memory<Byte>, SocketFlags, CancellationToken) |
Recebe os dados de um soquete conectado. |
ReceiveAsync(ArraySegment<Byte>)
- Origem:
- Socket.Tasks.cs
- Origem:
- Socket.Tasks.cs
- Origem:
- Socket.Tasks.cs
Recebe os dados de um soquete conectado.
public:
System::Threading::Tasks::Task<int> ^ ReceiveAsync(ArraySegment<System::Byte> buffer);
public System.Threading.Tasks.Task<int> ReceiveAsync (ArraySegment<byte> buffer);
member this.ReceiveAsync : ArraySegment<byte> -> System.Threading.Tasks.Task<int>
Public Function ReceiveAsync (buffer As ArraySegment(Of Byte)) As Task(Of Integer)
Parâmetros
- buffer
- ArraySegment<Byte>
O buffer para os dados recebidos.
Retornos
Uma tarefa assíncrona que é concluída com o número de bytes recebidos.
Exceções
O Socket foi fechado.
Ocorreu um erro ao tentar acessar o soquete.
Aplica-se a
ReceiveAsync(IList<ArraySegment<Byte>>)
- Origem:
- Socket.Tasks.cs
- Origem:
- Socket.Tasks.cs
- Origem:
- Socket.Tasks.cs
Recebe os dados de um soquete conectado.
public:
System::Threading::Tasks::Task<int> ^ ReceiveAsync(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ buffers);
public System.Threading.Tasks.Task<int> ReceiveAsync (System.Collections.Generic.IList<ArraySegment<byte>> buffers);
member this.ReceiveAsync : System.Collections.Generic.IList<ArraySegment<byte>> -> System.Threading.Tasks.Task<int>
Public Function ReceiveAsync (buffers As IList(Of ArraySegment(Of Byte))) As Task(Of Integer)
Parâmetros
- buffers
- IList<ArraySegment<Byte>>
Uma lista de buffers para os dados recebidos.
Retornos
Uma tarefa assíncrona que é concluída com o número de bytes recebidos.
Exceções
O parâmetro buffers
era nulo.
O Socket foi fechado.
Ocorreu um erro ao tentar acessar o soquete.
Comentários
Esse método armazena na tarefa que retorna todas as exceções de não uso que o equivalente síncrono do método pode gerar. Se uma exceção for armazenada na tarefa retornada, essa exceção será gerada quando a tarefa for aguardada. Exceções de uso, como ArgumentException, ainda são geradas de forma síncrona. Para as exceções armazenadas, consulte as exceções geradas por Receive(IList<ArraySegment<Byte>>).
Aplica-se a
ReceiveAsync(SocketAsyncEventArgs)
- Origem:
- Socket.cs
- Origem:
- Socket.cs
- Origem:
- Socket.cs
Inicia uma solicitação assíncrona para receber dados de um objeto Socket conectado.
public:
bool ReceiveAsync(System::Net::Sockets::SocketAsyncEventArgs ^ e);
public bool ReceiveAsync (System.Net.Sockets.SocketAsyncEventArgs e);
member this.ReceiveAsync : System.Net.Sockets.SocketAsyncEventArgs -> bool
Public Function ReceiveAsync (e As SocketAsyncEventArgs) As Boolean
Parâmetros
O objeto SocketAsyncEventArgs a ser usado nessa operação de soquete assíncrono.
Retornos
true
se a operação de E/S está pendente. O evento Completed no parâmetro e
será acionado após a conclusão da operação.
false
se a operação de E/S foi concluída de forma síncrona. Nesse caso, o evento Completed no parâmetro e
não será gerado e o objeto e
passado como um parâmetro poderá ser examinado imediatamente depois que a chamada do método for retornada para recuperar o resultado da operação.
Exceções
Um argumento era inválido. As propriedades Buffer ou BufferList no parâmetro e
devem referenciar buffers válidos. Uma ou a outra dessas propriedades poderá ser definida, mas não ambas ao mesmo tempo.
Uma operação de soquete já estava em andamento com o objeto SocketAsyncEventArgs especificado no parâmetro e
.
O Socket foi fechado.
Ocorreu um erro ao tentar acessar o soquete.
Comentários
O ReceiveAsync método é usado em soquetes conectados ou soquetes sem conexão associados e é usado para ler dados de entrada. O endereço local do soquete deve ser conhecido.
Para soquetes sem conexão associados, essa função restringe os endereços dos quais as mensagens recebidas são aceitas. A função retorna apenas mensagens do endereço remoto especificado na conexão. As mensagens de outros endereços são silenciosamente descartadas.
A SocketAsyncEventArgs.SocketFlags propriedade no e
parâmetro fornece ao provedor de serviços Window Sockets informações adicionais sobre a solicitação de leitura. Para obter mais informações sobre como usar esse parâmetro, consulte System.Net.Sockets.SocketFlags.
As seguintes propriedades e eventos no System.Net.Sockets.SocketAsyncEventArgs objeto são necessários para chamar esse método com êxito:
SocketAsyncEventArgs.Buffer ou SocketAsyncEventArgs.BufferList
SocketAsyncEventArgs.Count se SocketAsyncEventArgs.Buffer estiver definido
SocketAsyncEventArgs.Offset se SocketAsyncEventArgs.Buffer estiver definido
O chamador pode definir a SocketAsyncEventArgs.UserToken propriedade como qualquer objeto de estado de usuário desejado antes de chamar o ReceiveAsync método, para que as informações sejam recuperadas no método de retorno de chamada. Se o retorno de chamada precisar de mais informações do que um único objeto, uma classe pequena poderá ser criada para manter as outras informações de estado necessárias como membros.
Para soquetes no estilo de fluxo de bytes, os dados de entrada são colocados no buffer até que o buffer seja preenchido, a conexão seja fechada ou os dados armazenados em buffer interno sejam esgotados.
Para soquetes orientados a mensagens, uma mensagem de entrada é colocada no buffer até o tamanho total do buffer associado ao e
parâmetro . Se a mensagem for maior que o buffer, o buffer será preenchido com a primeira parte da mensagem.
Para soquetes orientados à conexão, o ReceiveAsync método pode indicar o término normal do circuito virtual de uma das duas maneiras que dependem se o soquete é orientado a mensagens ou fluxo de bytes. Para fluxos de bytes, zero bytes que foram lidos indica um fechamento normal e que nenhum bytes será lido. Para soquetes orientados a mensagens, em que uma mensagem de byte zero geralmente é permitida, um SocketException com o SocketAsyncEventArgs.SocketError definido como o código de erro nativo Winsock WSAEDISCON (10101) é usado para indicar o fechamento normal. De qualquer forma, um SocketException com o SocketAsyncEventArgs.SocketError definido como o código de erro nativo Winsock WSAECONNRESET (10054) indica que ocorreu um fechamento abortivo.
Confira também
Aplica-se a
ReceiveAsync(ArraySegment<Byte>, SocketFlags)
- Origem:
- Socket.Tasks.cs
- Origem:
- Socket.Tasks.cs
- Origem:
- Socket.Tasks.cs
Recebe os dados de um soquete conectado.
public:
System::Threading::Tasks::Task<int> ^ ReceiveAsync(ArraySegment<System::Byte> buffer, System::Net::Sockets::SocketFlags socketFlags);
public System.Threading.Tasks.Task<int> ReceiveAsync (ArraySegment<byte> buffer, System.Net.Sockets.SocketFlags socketFlags);
member this.ReceiveAsync : ArraySegment<byte> * System.Net.Sockets.SocketFlags -> System.Threading.Tasks.Task<int>
Public Function ReceiveAsync (buffer As ArraySegment(Of Byte), socketFlags As SocketFlags) As Task(Of Integer)
Parâmetros
- buffer
- ArraySegment<Byte>
O buffer para os dados recebidos.
- socketFlags
- SocketFlags
Uma combinação bit a bit de valores SocketFlags que serão usados ao receber os dados.
Retornos
Uma tarefa assíncrona que é concluída com o número de bytes recebidos.
Exceções
O Socket foi fechado.
Ocorreu um erro ao tentar acessar o soquete.
Aplica-se a
ReceiveAsync(IList<ArraySegment<Byte>>, SocketFlags)
- Origem:
- Socket.Tasks.cs
- Origem:
- Socket.Tasks.cs
- Origem:
- Socket.Tasks.cs
Recebe os dados de um soquete conectado.
public:
System::Threading::Tasks::Task<int> ^ ReceiveAsync(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ buffers, System::Net::Sockets::SocketFlags socketFlags);
public System.Threading.Tasks.Task<int> ReceiveAsync (System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags);
member this.ReceiveAsync : System.Collections.Generic.IList<ArraySegment<byte>> * System.Net.Sockets.SocketFlags -> System.Threading.Tasks.Task<int>
Public Function ReceiveAsync (buffers As IList(Of ArraySegment(Of Byte)), socketFlags As SocketFlags) As Task(Of Integer)
Parâmetros
- buffers
- IList<ArraySegment<Byte>>
Uma lista de buffers para os dados recebidos.
- socketFlags
- SocketFlags
Uma combinação bit a bit de valores SocketFlags que serão usados ao receber os dados.
Retornos
Uma tarefa assíncrona que é concluída com o número de bytes recebidos.
Exceções
O parâmetro buffers
era nulo.
O Socket foi fechado.
Ocorreu um erro ao tentar acessar o soquete.
Comentários
Esse método armazena na tarefa que retorna todas as exceções de não uso que o equivalente síncrono do método pode gerar. Se uma exceção for armazenada na tarefa retornada, essa exceção será gerada quando a tarefa for aguardada. Exceções de uso, como ArgumentException, ainda são geradas de forma síncrona. Para as exceções armazenadas, consulte as exceções geradas por Receive(IList<ArraySegment<Byte>>, SocketFlags).
Aplica-se a
ReceiveAsync(Memory<Byte>, CancellationToken)
- Origem:
- Socket.Tasks.cs
- Origem:
- Socket.Tasks.cs
- Origem:
- Socket.Tasks.cs
Recebe os dados de um soquete conectado.
public System.Threading.Tasks.ValueTask<int> ReceiveAsync (Memory<byte> buffer, System.Threading.CancellationToken cancellationToken = default);
member this.ReceiveAsync : Memory<byte> * System.Threading.CancellationToken -> System.Threading.Tasks.ValueTask<int>
Public Function ReceiveAsync (buffer As Memory(Of Byte), Optional cancellationToken As CancellationToken = Nothing) As ValueTask(Of Integer)
Parâmetros
- cancellationToken
- CancellationToken
Um token de cancelamento que pode ser usado para cancelar a operação assíncrona.
Retornos
Uma tarefa assíncrona que é concluída com o número de bytes recebidos.
Exceções
O Socket foi fechado.
Ocorreu um erro ao tentar acessar o soquete.
O token de cancelamento foi cancelado. Essa exceção é armazenada na tarefa retornada.
Aplica-se a
ReceiveAsync(Memory<Byte>, SocketFlags, CancellationToken)
- Origem:
- Socket.Tasks.cs
- Origem:
- Socket.Tasks.cs
- Origem:
- Socket.Tasks.cs
Recebe os dados de um soquete conectado.
public System.Threading.Tasks.ValueTask<int> ReceiveAsync (Memory<byte> buffer, System.Net.Sockets.SocketFlags socketFlags, System.Threading.CancellationToken cancellationToken = default);
member this.ReceiveAsync : Memory<byte> * System.Net.Sockets.SocketFlags * System.Threading.CancellationToken -> System.Threading.Tasks.ValueTask<int>
Public Function ReceiveAsync (buffer As Memory(Of Byte), socketFlags As SocketFlags, Optional cancellationToken As CancellationToken = Nothing) As ValueTask(Of Integer)
Parâmetros
- socketFlags
- SocketFlags
Uma combinação bit a bit de valores SocketFlags que serão usados ao receber os dados.
- cancellationToken
- CancellationToken
Um token de cancelamento que pode ser usado para cancelar a operação assíncrona.
Retornos
Uma tarefa assíncrona que é concluída com o número de bytes recebidos.
Exceções
O Socket foi fechado.
Ocorreu um erro ao tentar acessar o soquete.
O token de cancelamento foi cancelado. Essa exceção é armazenada na tarefa retornada.