Partilhar via


Socket.EndSend Método

Definição

Encerra um envio assíncrono pendente.

Sobrecargas

Nome Description
EndSend(IAsyncResult)

Encerra um envio assíncrono pendente.

EndSend(IAsyncResult, SocketError)

Encerra um envio assíncrono pendente.

EndSend(IAsyncResult)

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

Encerra um envio assíncrono pendente.

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

Parâmetros

asyncResult
IAsyncResult

Um IAsyncResult que armazena informações de estado para essa operação assíncrona.

Retornos

Se bem-sucedido, o número de bytes enviados para o Socket; caso contrário, um erro inválido Socket .

Exceções

asyncResult é null.

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

EndSend(IAsyncResult) foi chamado anteriormente para o envio assíncrono.

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.

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

Se você estiver usando um protocolo sem conexão, EndSend será bloqueado até que o datagram seja enviado. Se você estiver usando um protocolo orientado à conexão, EndSend será bloqueado até que parte do buffer seja enviado. Se o valor retornado EndSend indicar que o buffer não foi completamente enviado, chame o BeginSend método novamente, modificando o buffer para manter os dados não enviados.

Não há nenhuma garantia de que os dados enviados serão exibidos na rede imediatamente. Para aumentar a eficiência de rede, o sistema subjacente pode atrasar a transmissão até que uma quantidade significativa de dados de saída seja coletada. Uma conclusão bem-sucedida do BeginSend método significa que o sistema subjacente teve espaço para armazenar em buffer seus dados para um envio de rede.

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

A conclusão bem-sucedida de um envio não indica que os dados foram entregues com êxito. Se nenhum espaço de buffer estiver disponível no sistema de transporte para manter os dados a serem transmitidos, o envio será bloqueado, a menos que o soquete tenha sido colocado no modo de não bloqueio.

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

EndSend(IAsyncResult, SocketError)

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

Encerra um envio assíncrono pendente.

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

Parâmetros

asyncResult
IAsyncResult

Um IAsyncResult que armazena informações de estado para essa operação assíncrona.

errorCode
SocketError

Um SocketError objeto que armazena o erro do soquete.

Retornos

Se bem-sucedido, o número de bytes enviados para o Socket; caso contrário, um erro inválido Socket .

Exceções

asyncResult é null.

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

EndSend(IAsyncResult) foi chamado anteriormente para o envio assíncrono.

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.

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

Se você estiver usando um protocolo sem conexão, EndSend será bloqueado até que o datagram seja enviado. Se você estiver usando um protocolo orientado à conexão, EndSend será bloqueado até que parte do buffer seja enviado. Se o valor retornado EndSend indicar que o buffer não foi completamente enviado, chame o BeginSend método novamente, modificando o buffer para manter os dados não enviados.

Não há nenhuma garantia de que os dados enviados serão exibidos na rede imediatamente. Para aumentar a eficiência de rede, o sistema subjacente pode atrasar a transmissão até que uma quantidade significativa de dados de saída seja coletada. Uma conclusão bem-sucedida do BeginSend método significa que o sistema subjacente teve espaço para armazenar em buffer seus dados para um envio de rede.

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

A conclusão bem-sucedida de um envio não indica que os dados foram entregues com êxito. Se nenhum espaço de buffer estiver disponível no sistema de transporte para manter os dados a serem transmitidos, o envio será bloqueado, a menos que o soquete tenha sido colocado no modo de não bloqueio.

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