Socket.EndSendTo(IAsyncResult) Método

Definição

Encerra um envio assíncrono pendente para um local específico.Ends a pending asynchronous send to a specific location.

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

Parâmetros

asyncResultresult
IAsyncResult

Um IAsyncResult que armazena informações de estado e dados definidos pelo usuário para essa operação assíncrona.An IAsyncResult that stores state information and any user defined data for this asynchronous operation.

Retornos

Int32

Se for bem-sucedido, o número de bytes enviados; caso contrário, um erro Socket inválido.If successful, the number of bytes sent; otherwise, an invalid Socket error.

Exceções

asyncResult é null.asyncResult is null.

O EndSendTo(IAsyncResult) foi chamado anteriormente para o envio assíncrono.EndSendTo(IAsyncResult) was previously called for the asynchronous send.

Ocorreu um erro ao tentar acessar o soquete.An error occurred when attempting to access the socket.

O Socket foi fechado.The Socket has been closed.

Exemplos

O exemplo de código a seguir encerra um envio assíncrono para um local específico.The following code example ends an asynchronous send to a specific location.

StateObject^ so = safe_cast<StateObject^>(ar->AsyncState);
Socket^ s = so->workSocket;

int send = s->EndSendTo( ar );

Console::WriteLine( "The size of the message sent was : {0}", send );

s->Close();
StateObject so = (StateObject) ar.AsyncState;
Socket s = so.workSocket;

int send = s.EndSendTo(ar);

   Console.WriteLine("The size of the message sent was :" + send.ToString());

s.Close();
   Dim so As StateObject = CType(ar.AsyncState, StateObject)
   Dim s As Socket = so.workSocket
   
   Dim send As Integer = s.EndSendTo(ar)
   
   Console.WriteLine(("The size of the message sent was :" + send.ToString()))
   
   s.Close()
End Sub

Comentários

EndSendTo conclui a operação de envio assíncrono iniciada em BeginSendTo .EndSendTo completes the asynchronous send operation started in BeginSendTo.

Antes de chamar BeginSendTo , você precisa criar um método de retorno de chamada que implemente o AsyncCallback delegado.Before calling BeginSendTo, you need to create a callback method that implements the AsyncCallback delegate. Esse método de retorno de chamada é executado em um thread separado e é chamado pelo sistema após o BeginReceive retornos.This callback method executes in a separate thread and is called by the system after BeginReceive returns. O método de retorno de chamada deve aceitar o IAsyncResult retornado pelo BeginSendTo método como um parâmetro.The callback method must accept the IAsyncResult returned by the BeginSendTo method as a parameter.

No método de retorno de chamada, chame o AsyncState método do IAsyncResult parâmetro para obter o envio Socket .Within the callback method, call the AsyncState method of the IAsyncResult parameter to obtain the sending Socket. Depois de obter o Socket , você pode chamar o EndSendTo método para concluir com êxito a operação de envio e retornar o número de bytes enviados.After obtaining the Socket, you can call the EndSendTo method to successfully complete the send operation and return the number of bytes sent.

Se você estiver usando um protocolo sem conexão, EndSendTo o será bloqueado até que o datagrama seja enviado.If you are using a connectionless protocol, EndSendTo will block until the datagram is sent. Se você estiver usando um protocolo orientado a conexão, EndSendTo o será bloqueado até que o número solicitado de bytes seja enviado.If you are using a connection-oriented protocol, EndSendTo will block until the requested number of bytes are sent. Não há nenhuma garantia de que os dados que você enviar aparecerão na rede imediatamente.There is no guarantee that the data you send will appear on the network immediately. 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.To increase network efficiency, the underlying system may delay transmission until a significant amount of outgoing data is collected. Uma conclusão bem-sucedida do BeginSendTo método significa que o sistema subjacente tinha espaço para armazenar em buffer os dados de um envio de rede.A successful completion of the BeginSendTo method means that the underlying system has had room to buffer your data for a network send.

Observação

Se você receber um SocketException , use a SocketException.ErrorCode propriedade para obter o código de erro específico.If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. Depois de obter esse código, consulte a documentação do código de erro da API do Windows Sockets versão 2 para obter uma descrição detalhada do erro.After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

Observação

Esse membro emite o rastreamento de informações quando você ativa o rastreamento de rede em seu aplicativo.This member outputs trace information when you enable network tracing in your application. Para obter mais informações, consulte rastreamento de rede na .NET Framework.For more information, see Network Tracing in the .NET Framework.

Aplica-se a