Compartilhar via


Socket.ReceiveAsync Método

Definição

Sobrecargas

Nome Description
ReceiveAsync(ArraySegment<Byte>)

Recebe dados de um soquete conectado.

ReceiveAsync(IList<ArraySegment<Byte>>)

Recebe dados de um soquete conectado.

ReceiveAsync(SocketAsyncEventArgs)

Inicia uma solicitação assíncrona para receber dados de um objeto conectado Socket .

ReceiveAsync(ArraySegment<Byte>, SocketFlags)

Recebe dados de um soquete conectado.

ReceiveAsync(IList<ArraySegment<Byte>>, SocketFlags)

Recebe dados de um soquete conectado.

ReceiveAsync(Memory<Byte>, CancellationToken)

Recebe dados de um soquete conectado.

ReceiveAsync(Memory<Byte>, SocketFlags, CancellationToken)

Recebe dados de um soquete conectado.

ReceiveAsync(ArraySegment<Byte>)

Origem:
Socket.Tasks.cs
Origem:
Socket.Tasks.cs
Origem:
Socket.Tasks.cs
Origem:
Socket.Tasks.cs
Origem:
Socket.Tasks.cs

Recebe 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 que representa a operação de recebimento assíncrono. O valor de sua Result propriedade contém o número total de bytes lidos buffer entre zero (0) e o número de bytes solicitados. O valor do resultado será zero (0) somente se zero bytes tiverem sido solicitados ou se não houver mais bytes disponíveis porque o soquete par executou um desligamento normal. Se zero bytes forem solicitados, as operações de recebimento poderão ser concluídas imediatamente ou não serão concluídas até que pelo menos um byte esteja disponível (mas sem consumir dados).

Exceções

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
Origem:
Socket.Tasks.cs
Origem:
Socket.Tasks.cs

Recebe 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 que representa a operação de recebimento assíncrono. O valor de sua Result propriedade contém o número total de bytes lidos nos buffers entre zero (0) e o número de bytes solicitados. O valor do resultado será zero (0) somente se zero bytes tiverem sido solicitados ou se não houver mais bytes disponíveis porque o soquete par executou um desligamento normal. Se zero bytes forem solicitados, as operações de recebimento poderão ser concluídas imediatamente ou não serão concluídas até que pelo menos um byte esteja disponível (mas sem consumir dados).

Exceções

O buffers parâmetro era nulo.

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
Origem:
Socket.cs
Origem:
Socket.cs

Inicia uma solicitação assíncrona para receber dados de um objeto conectado Socket .

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

e
SocketAsyncEventArgs

O SocketAsyncEventArgs objeto a ser usado para esta operação de soquete assíncrona.

Retornos

true se a operação de E/S estiver pendente. O Completed evento no e parâmetro será gerado após a conclusão da operação.

false se a operação de E/S for concluída de forma síncrona. Nesse caso, Completed o e evento no parâmetro não será gerado e o e objeto passado como um parâmetro poderá ser examinado imediatamente após a chamada do método retornar para recuperar o resultado da operação.

Exceções

Um argumento era inválido. As Buffer propriedades ou BufferList propriedades no e parâmetro devem referenciar buffers válidos. Uma ou outra dessas propriedades pode ser definida, mas não ambas ao mesmo tempo.

Uma operação de soquete já estava em andamento usando o SocketAsyncEventArgs objeto especificado no e parâmetro.

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 descartadas silenciosamente.

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:

O chamador pode definir a SocketAsyncEventArgs.UserToken propriedade para qualquer objeto de estado de usuário desejado antes de chamar o ReceiveAsync método, para que as informações sejam recuperáveis 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 fluxo de bytes ou mensagem. Para fluxos de bytes, zero bytes que foram lidos indica um fechamento normal e que nenhum bytes jamais será lido. Para soquetes orientados a mensagens, em que uma mensagem de byte zero geralmente é permitido, um SocketException com o SocketAsyncEventArgs.SocketError conjunto para o código de erro nativo Winsock WSAEDISCON (10101) é usado para indicar o fechamento normal. De qualquer forma, um SocketException com o SocketAsyncEventArgs.SocketError conjunto para o código de erro nativo Winsock WSAECONNRESET (10054) indica que ocorreu um fechamento anulativo.

Confira também

Aplica-se a

ReceiveAsync(ArraySegment<Byte>, SocketFlags)

Origem:
Socket.Tasks.cs
Origem:
Socket.Tasks.cs
Origem:
Socket.Tasks.cs
Origem:
Socket.Tasks.cs
Origem:
Socket.Tasks.cs

Recebe 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 que representa a operação de recebimento assíncrono. O valor de sua Result propriedade contém o número total de bytes lidos buffer entre zero (0) e o número de bytes solicitados. O valor do resultado será zero (0) somente se zero bytes tiverem sido solicitados ou se não houver mais bytes disponíveis porque o soquete par executou um desligamento normal. Se zero bytes forem solicitados, as operações de recebimento poderão ser concluídas imediatamente ou não serão concluídas até que pelo menos um byte esteja disponível (mas sem consumir dados).

Exceções

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
Origem:
Socket.Tasks.cs
Origem:
Socket.Tasks.cs

Recebe 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 que representa a operação de recebimento assíncrono. O valor de sua Result propriedade contém o número total de bytes lidos buffer entre zero (0) e o número de bytes solicitados. O valor do resultado será zero (0) somente se zero bytes tiverem sido solicitados ou se não houver mais bytes disponíveis porque o soquete par executou um desligamento normal. Se zero bytes forem solicitados, as operações de recebimento poderão ser concluídas imediatamente ou não serão concluídas até que pelo menos um byte esteja disponível (mas sem consumir dados).

Exceções

O buffers parâmetro era nulo.

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
Origem:
Socket.Tasks.cs
Origem:
Socket.Tasks.cs

Recebe 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

buffer
Memory<Byte>

O buffer para os dados recebidos.

cancellationToken
CancellationToken

Um token de cancelamento que pode ser usado para cancelar a operação assíncrona.

Retornos

Um ValueTask<TResult> que representa a operação de recebimento assíncrono. O valor de sua Result propriedade contém o número total de bytes lidos buffer entre zero (0) e o número de bytes solicitados. O valor do resultado será zero (0) somente se zero bytes tiverem sido solicitados ou se não houver mais bytes disponíveis porque o soquete par executou um desligamento normal. Se zero bytes forem solicitados, as operações de recebimento poderão ser concluídas imediatamente ou não serão concluídas até que pelo menos um byte esteja disponível (mas sem consumir dados).

Exceções

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
Origem:
Socket.Tasks.cs
Origem:
Socket.Tasks.cs

Recebe 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

buffer
Memory<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.

cancellationToken
CancellationToken

Um token de cancelamento que pode ser usado para cancelar a operação assíncrona.

Retornos

Um ValueTask<TResult> que representa a operação de recebimento assíncrono. O valor de sua Result propriedade contém o número total de bytes lidos buffer entre zero (0) e o número de bytes solicitados. O valor do resultado será zero (0) somente se zero bytes tiverem sido solicitados ou se não houver mais bytes disponíveis porque o soquete par executou um desligamento normal. Se zero bytes forem solicitados, as operações de recebimento poderão ser concluídas imediatamente ou não serão concluídas até que pelo menos um byte esteja disponível (mas sem consumir dados).

Exceções

Erro ao tentar acessar o soquete.

O token de cancelamento foi cancelado. Essa exceção é armazenada na tarefa retornada.

Aplica-se a