Socket.EndSend Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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.
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 Task
equivalentes 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
- BeginSend(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object)
- AsyncCallback
- AsyncState
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
- NoDelay
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.
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 Task
equivalentes 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
- BeginSend(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object)
- AsyncCallback
- AsyncState
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
- NoDelay