Socket.EndSend Método

Definição

Termina um envio assíncrono pendente.

Sobrecargas

Name Description
EndSend(IAsyncResult)

Termina um envio assíncrono pendente.

EndSend(IAsyncResult, SocketError)

Termina um envio assíncrono pendente.

EndSend(IAsyncResult)

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

Termina 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

E IAsyncResult que armazena informação de estado para esta operação assíncrona.

Devoluções

Se for 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 respondido por uma chamada ao BeginSend(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object) método.

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

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 .

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

Se estiveres a usar um protocolo sem ligação, EndSend vais bloquear até o datagrama ser enviado. Se estiveres a usar um protocolo orientado à ligação, EndSend vais bloquear até que parte do buffer seja enviada. Se o valor de retorno de EndSend indicar que o buffer não foi completamente enviado, chame novamente o BeginSend método, modificando o buffer para conter os dados não enviados.

Não há garantia de que os dados que envia apareçam imediatamente na rede. 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 recolhida. A conclusão bem-sucedida do BeginSend método significa que o sistema subjacente teve espaço para armazenar os seus dados para um envio em rede.

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

A conclusão bem-sucedida de um envio não indica que os dados foram entregues com sucesso. Se não houver espaço de buffer disponível dentro do sistema de transporte para armazenar os dados a transmitir, enviar irá bloquear, a menos que o socket tenha sido colocado em modo não bloqueante.

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

EndSend(IAsyncResult, SocketError)

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

Termina 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

E IAsyncResult que armazena informação de estado para esta operação assíncrona.

errorCode
SocketError

Um SocketError objeto que armazena o erro do soquete.

Devoluções

Se for 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 respondido por uma chamada ao BeginSend(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object) método.

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

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 .

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

Se estiveres a usar um protocolo sem ligação, EndSend vais bloquear até o datagrama ser enviado. Se estiveres a usar um protocolo orientado à ligação, EndSend vais bloquear até que parte do buffer seja enviada. Se o valor de retorno de EndSend indicar que o buffer não foi completamente enviado, chame novamente o BeginSend método, modificando o buffer para conter os dados não enviados.

Não há garantia de que os dados que envia apareçam imediatamente na rede. 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 recolhida. A conclusão bem-sucedida do BeginSend método significa que o sistema subjacente teve espaço para armazenar os seus dados para um envio em rede.

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

A conclusão bem-sucedida de um envio não indica que os dados foram entregues com sucesso. Se não houver espaço de buffer disponível dentro do sistema de transporte para armazenar os dados a transmitir, enviar irá bloquear, a menos que o socket tenha sido colocado em modo não bloqueante.

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