Compartilhar via


Socket.EndSend Método

Definição

Encerra um envio assíncrono pendente.

Sobrecargas

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

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 as informações de estado dessa operação assíncrona.

Retornos

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

Exceções

asyncResult é null.

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

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

Ocorreu um 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 novo desenvolvimento. Em vez disso, use os Taskequivalentes baseados em .

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

Se você estiver usando um protocolo sem conexão, EndSend será bloqueado até que o datagrama seja enviado. Se você estiver usando um protocolo orientado a conexão, EndSend será bloqueado até que parte do buffer seja enviado. Se o valor retornado de 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 da 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 seus dados em buffer 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 sem bloqueio.

Observação

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

Confira também

Aplica-se a

EndSend(IAsyncResult, SocketError)

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 as informações de estado dessa operação assíncrona.

errorCode
SocketError

Um objeto SocketError que armazena o erro de soquete.

Retornos

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

Exceções

asyncResult é null.

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

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

Ocorreu um 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 novo desenvolvimento. Em vez disso, use os Taskequivalentes baseados em .

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

Se você estiver usando um protocolo sem conexão, EndSend será bloqueado até que o datagrama seja enviado. Se você estiver usando um protocolo orientado a conexão, EndSend será bloqueado até que parte do buffer seja enviado. Se o valor retornado de 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 da 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 seus dados em buffer 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 sem bloqueio.

Observação

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

Confira também

Aplica-se a