Socket.EndReceive Método

Definição

Termina uma leitura assíncrona pendente.

Sobrecargas

Name Description
EndReceive(IAsyncResult)

Termina uma leitura assíncrona pendente.

EndReceive(IAsyncResult, SocketError)

Termina uma leitura assíncrona pendente.

EndReceive(IAsyncResult)

Termina uma leitura assíncrona pendente.

public:
 int EndReceive(IAsyncResult ^ asyncResult);
public int EndReceive(IAsyncResult asyncResult);
member this.EndReceive : IAsyncResult -> int
Public Function EndReceive (asyncResult As IAsyncResult) As Integer

Parâmetros

asyncResult
IAsyncResult

E IAsyncResult que armazena informação de estado e quaisquer dados definidos pelo utilizador para esta operação assíncrona.

Devoluções

O número total de bytes recebidos. O método retorna zero (0) apenas se foram solicitados zero bytes ou se não houver mais bytes disponíveis porque o socket peer realizou um desligamento gracioso. Se forem solicitados zero bytes, as operações de receção podem ser concluídas imediatamente ou podem não ser concluídas até que pelo menos um byte esteja disponível (mas sem consumir quaisquer dados).

Exceções

asyncResult é null.

asyncResult não foi respondido por uma chamada ao BeginReceive(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object) método.

EndReceive(IAsyncResult) foi anteriormente chamada para a leitura assíncrona.

Ocorreu um erro ao tentar aceder ao soquete.

-ou-

.NET apenas 7+: O Socket foi encerrado.

.NET Framework, .NET Core e .NET 5-6 apenas: O Socket foi encerrado.

Observações

Importante

Isto é uma API de compatibilidade. Não recomendamos o uso dos métodos APM (Begin* e End*) para novos desenvolvimentos. Em vez disso, use os Taskequivalentes baseados em .

EndReceive completa a operação iniciada por BeginReceive. Tem de passar a decisão IAsyncResult criada pela chamada correspondente BeginReceive .

O EndReceive método irá bloquear até que os dados estejam disponíveis. Se estiver a usar um protocolo sem conexão, EndReceive irá ler o primeiro datagrama enfileirado disponível no buffer de rede de entrada. Se estiver a usar um protocolo orientado à ligação, o EndReceive método irá ler tantos dados quanto estiver disponível até ao número de bytes especificados no size parâmetro do BeginReceive método. Se o host remoto desligar a Socket ligação com o Shutdown método e todos os dados disponíveis forem recebidos, o EndReceive método será concluído imediatamente e retornará zero bytes.

Note

Se receber um SocketException, use a SocketException.ErrorCode propriedade para obter o código de erro específico.

Note

Todas as E/S iniciadas por uma dada thread são canceladas quando essa thread sai. Uma operação assíncrona pendente pode falhar se a thread sair antes da operação terminar.

Note

Esse membro gera informações de rastreamento quando você habilita o rastreamento de rede em seu aplicativo. Para mais informações, consulte Network Tracing in .NET Framework.

Ver também

Aplica-se a

EndReceive(IAsyncResult, SocketError)

Termina uma leitura assíncrona pendente.

public:
 int EndReceive(IAsyncResult ^ asyncResult, [Runtime::InteropServices::Out] System::Net::Sockets::SocketError % errorCode);
public int EndReceive(IAsyncResult asyncResult, out System.Net.Sockets.SocketError errorCode);
member this.EndReceive : IAsyncResult * SocketError -> int
Public Function EndReceive (asyncResult As IAsyncResult, ByRef errorCode As SocketError) As Integer

Parâmetros

asyncResult
IAsyncResult

E IAsyncResult que armazena informação de estado e quaisquer dados definidos pelo utilizador para esta operação assíncrona.

errorCode
SocketError

Um SocketError objeto que armazena o erro do soquete.

Devoluções

O número total de bytes recebidos. O método retorna zero (0) apenas se foram solicitados zero bytes ou se não houver mais bytes disponíveis porque o socket peer realizou um desligamento gracioso. Se forem solicitados zero bytes, as operações de receção podem ser concluídas imediatamente ou podem não ser concluídas até que pelo menos um byte esteja disponível (mas sem consumir quaisquer dados).

Exceções

asyncResult é null.

asyncResult não foi respondido por uma chamada ao BeginReceive(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object) método.

EndReceive(IAsyncResult) foi anteriormente chamada para a leitura assíncrona.

Ocorreu um erro ao tentar aceder ao soquete.

-ou-

.NET apenas 7+: O Socket foi encerrado.

.NET Framework, .NET Core e .NET 5-6 apenas: O Socket foi encerrado.

Observações

Importante

Isto é uma API de compatibilidade. Não recomendamos o uso dos métodos APM (Begin* e End*) para novos desenvolvimentos. Em vez disso, use os Taskequivalentes baseados em .

EndReceive completa a operação iniciada por BeginReceive. Tem de passar a decisão IAsyncResult criada pela chamada correspondente BeginReceive .

O EndReceive método irá bloquear até que os dados estejam disponíveis. Se estiver a usar um protocolo sem conexão, EndReceive irá ler o primeiro datagrama enfileirado disponível no buffer de rede de entrada. Se estiver a usar um protocolo orientado à ligação, o EndReceive método irá ler tantos dados quanto estiver disponível até ao número de bytes especificados no size parâmetro do BeginReceive método. Se o host remoto desligar a Socket ligação com o Shutdown método e todos os dados disponíveis forem recebidos, o EndReceive método será concluído imediatamente e retornará zero bytes.

Note

Se receber um SocketException, use a SocketException.ErrorCode propriedade para obter o código de erro específico.

Note

Todas as E/S iniciadas por uma dada thread são canceladas quando essa thread sai. Uma operação assíncrona pendente pode falhar se a thread sair antes da operação terminar.

Note

Esse membro gera informações de rastreamento quando você habilita o rastreamento de rede em seu aplicativo. Para mais informações, consulte Network Tracing in .NET Framework.

Ver também

Aplica-se a