Compartilhar via


Socket.EndReceive Método

Definição

Termina uma leitura assíncrona pendente.

Sobrecargas

Nome Description
EndReceive(IAsyncResult)

Termina uma leitura assíncrona pendente.

EndReceive(IAsyncResult, SocketError)

Termina uma leitura assíncrona pendente.

EndReceive(IAsyncResult)

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

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

Um IAsyncResult que armazena informações de estado e todos os dados definidos pelo usuário para essa operação assíncrona.

Retornos

O número total de bytes recebidos. O método retornará zero (0) somente se zero bytes tiverem sido solicitados ou se não houver mais bytes disponíveis porque o soquete par realizou 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

asyncResult é null.

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

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

Erro ao tentar acessar o soquete.

- ou -

Somente .NET 7+: o Socket foi fechado.

Somente .NET Framework, .NET Core e .NET 5-6: o Socket foi fechado.

Comentários

Importante

Essa é uma API de compatibilidade. Não recomendamos usar os métodos APM (Begin* e End*) para o novo desenvolvimento. Em vez disso, use os Taskequivalentes baseados.

EndReceive conclui a operação iniciada por BeginReceive. Você precisa passar a IAsyncResult chamada criada pela chamada correspondente BeginReceive .

O EndReceive método será bloqueado até que os dados sejam disponibilizados. Se você estiver usando um protocolo sem conexão, EndReceive lerá o primeiro datagrama enfileirado disponível no buffer de rede de entrada. Se você estiver usando um protocolo orientado à conexão, o EndReceive método lerá o máximo de dados que estiver disponível até o número de bytes especificados no size parâmetro do BeginReceive método. Se o host remoto desligar a Socket conexão com o Shutdown método e todos os dados disponíveis tiverem sido recebidos, o EndReceive método será concluído imediatamente e retornará zero bytes.

Observação

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

Observação

Todas as E/S iniciadas por um determinado thread são canceladas quando esse thread é encerrado. Uma operação assíncrona pendente poderá falhar se o thread for encerrado antes da conclusão da operação.

Observação

Esse membro gera informações de rastreamento quando você habilita o rastreamento de rede em seu aplicativo. Para obter mais informações, consulte Rastreamento de Rede no .NET Framework.

Confira também

Aplica-se a

EndReceive(IAsyncResult, SocketError)

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

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

Um IAsyncResult que armazena informações de estado e todos os dados definidos pelo usuário para essa operação assíncrona.

errorCode
SocketError

Um SocketError objeto que armazena o erro do soquete.

Retornos

O número total de bytes recebidos. O método retornará zero (0) somente se zero bytes tiverem sido solicitados ou se não houver mais bytes disponíveis porque o soquete par realizou 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

asyncResult é null.

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

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

Erro ao tentar acessar o soquete.

- ou -

Somente .NET 7+: o Socket foi fechado.

Somente .NET Framework, .NET Core e .NET 5-6: o Socket foi fechado.

Comentários

Importante

Essa é uma API de compatibilidade. Não recomendamos usar os métodos APM (Begin* e End*) para o novo desenvolvimento. Em vez disso, use os Taskequivalentes baseados.

EndReceive conclui a operação iniciada por BeginReceive. Você precisa passar a IAsyncResult chamada criada pela chamada correspondente BeginReceive .

O EndReceive método será bloqueado até que os dados sejam disponibilizados. Se você estiver usando um protocolo sem conexão, EndReceive lerá o primeiro datagrama enfileirado disponível no buffer de rede de entrada. Se você estiver usando um protocolo orientado à conexão, o EndReceive método lerá o máximo de dados que estiver disponível até o número de bytes especificados no size parâmetro do BeginReceive método. Se o host remoto desligar a Socket conexão com o Shutdown método e todos os dados disponíveis tiverem sido recebidos, o EndReceive método será concluído imediatamente e retornará zero bytes.

Observação

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

Observação

Todas as E/S iniciadas por um determinado thread são canceladas quando esse thread é encerrado. Uma operação assíncrona pendente poderá falhar se o thread for encerrado antes da conclusão da operação.

Observação

Esse membro gera informações de rastreamento quando você habilita o rastreamento de rede em seu aplicativo. Para obter mais informações, consulte Rastreamento de Rede no .NET Framework.

Confira também

Aplica-se a