Socket.EndSend Socket.EndSend Socket.EndSend Socket.EndSend Method

Definición

Finaliza un envío asincrónico pendiente.Ends a pending asynchronous send.

Sobrecargas

EndSend(IAsyncResult) EndSend(IAsyncResult) EndSend(IAsyncResult) EndSend(IAsyncResult)

Finaliza un envío asincrónico pendiente.Ends a pending asynchronous send.

EndSend(IAsyncResult, SocketError) EndSend(IAsyncResult, SocketError) EndSend(IAsyncResult, SocketError) EndSend(IAsyncResult, SocketError)

Finaliza un envío asincrónico pendiente.Ends a pending asynchronous send.

EndSend(IAsyncResult) EndSend(IAsyncResult) EndSend(IAsyncResult) EndSend(IAsyncResult)

Finaliza un envío asincrónico pendiente.Ends a pending asynchronous send.

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

Parámetros

asyncResult
IAsyncResult IAsyncResult IAsyncResult IAsyncResult

IAsyncResult que almacena información de estado para esta operación asincrónica.An IAsyncResult that stores state information for this asynchronous operation.

Devoluciones

Si se realiza con éxito, el número de bytes enviados al objeto Socket; en caso contrario, un error de Socket no válido.If successful, the number of bytes sent to the Socket; otherwise, an invalid Socket error.

Excepciones

EndSend(IAsyncResult) fue llamado previamente para el envío asincrónico.EndSend(IAsyncResult) was previously called for the asynchronous send.

Error al intentar acceder al socket.An error occurred when attempting to access the socket.

Ejemplos

El siguiente ejemplo de código finaliza un envío asincrónico pendiente.The following code example ends a pending asynchronous send.

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

int send = s->EndSend( 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.EndSend(ar);

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

s.Close();
Public Shared Sub Send_Callback(ar As IAsyncResult)

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

Comentarios

EndSendcompleta la operación de envío asincrónica iniciada en BeginSend.EndSend completes the asynchronous send operation started in BeginSend.

Antes de BeginSendllamar a, debe crear un método de devolución de llamada que AsyncCallback implemente el delegado.Before calling BeginSend, you need to create a callback method that implements the AsyncCallback delegate. Este método de devolución de llamada se ejecuta en un subproceso independiente y lo llama BeginSend el sistema después de que se devuelva.This callback method executes in a separate thread and is called by the system after BeginSend returns. El método de devolución de llamada IAsyncResult debe aceptar el BeginSend devuelto por el método como parámetro.The callback method must accept the IAsyncResult returned by the BeginSend method as a parameter.

Dentro del método IAsyncResult de devolución de llamada AsyncState , llame al método del parámetro para obtener Socketel envío.Within the callback method, call the AsyncState method of the IAsyncResult parameter to obtain the sending Socket. Después de obtener Socket, puede EndSend llamar al método para completar correctamente la operación de envío y devolver el número de bytes enviados.After obtaining the Socket, you can call the EndSend method to successfully complete the send operation and return the number of bytes sent.

Si utiliza un protocolo sin conexión, EndSend se bloqueará hasta que se envíe el datagrama.If you are using a connectionless protocol, EndSend will block until the datagram is sent. Si utiliza un protocolo orientado a la conexión, EndSend se bloqueará hasta que se envíe parte del búfer.If you are using a connection-oriented protocol, EndSend will block until some of the buffer was sent. Si el valor devuelto EndSend de indica que el búfer no se envió por completo, BeginSend vuelva a llamar al método y modifique el búfer para que contenga los datos no enviados.If the return value from EndSend indicates that the buffer was not completely sent, call the BeginSend method again, modifying the buffer to hold the unsent data.

No hay ninguna garantía de que los datos que envíe aparecerán inmediatamente en la red.There is no guarantee that the data you send will appear on the network immediately. Para aumentar la eficacia de la red, el sistema subyacente puede retrasar la transmisión hasta que se recopile una cantidad significativa de datos salientes.To increase network efficiency, the underlying system may delay transmission until a significant amount of outgoing data is collected. Una finalización correcta del BeginSend método significa que el sistema subyacente tiene espacio para almacenar en búfer los datos para un envío de red.A successful completion of the BeginSend method means that the underlying system has had room to buffer your data for a network send.

Nota

Si recibe un SocketException, utilice la SocketException.ErrorCode propiedad para obtener el código de error específico.If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. Después de obtener este código, consulte la documentación del código de error de la API de Windows Sockets versión 2 para obtener una descripción detallada del error.After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

Nota

Todas las operaciones de e/s iniciadas por un subproceso determinado se cancelan cuando finaliza el subproceso.All I/O initiated by a given thread is canceled when that thread exits. Una operación asincrónica pendiente puede producir un error si el subproceso finaliza antes de que se complete la operación.A pending asynchronous operation can fail if the thread exits before the operation completes.

Nota

La finalización correcta de un envío no indica que los datos se han entregado correctamente.The successful completion of a send does not indicate that the data was successfully delivered. Si no hay espacio en búfer disponible en el sistema de transporte para almacenar los datos que se van a transmitir, el envío se bloqueará a menos que el socket se haya colocado en modo de no bloqueo.If no buffer space is available within the transport system to hold the data to be transmitted, send will block unless the socket has been placed in nonblocking mode.

Nota

Este miembro genera información de seguimiento cuando se habilita el seguimiento de red en la aplicación.This member outputs trace information when you enable network tracing in your application. Para obtener más información, consulte seguimiento de red en el .NET Framework.For more information, see Network Tracing in the .NET Framework.

Consulte también:

EndSend(IAsyncResult, SocketError) EndSend(IAsyncResult, SocketError) EndSend(IAsyncResult, SocketError) EndSend(IAsyncResult, SocketError)

Finaliza un envío asincrónico pendiente.Ends a pending asynchronous send.

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 *  -> int
Public Function EndSend (asyncResult As IAsyncResult, ByRef errorCode As SocketError) As Integer

Parámetros

asyncResult
IAsyncResult IAsyncResult IAsyncResult IAsyncResult

IAsyncResult que almacena información de estado para esta operación asincrónica.An IAsyncResult that stores state information for this asynchronous operation.

errorCode
SocketError SocketError SocketError SocketError

Objeto SocketError que almacena el error de socket.A SocketError object that stores the socket error.

Devoluciones

Si se realiza con éxito, el número de bytes enviados al objeto Socket; en caso contrario, un error de Socket no válido.If successful, the number of bytes sent to the Socket; otherwise, an invalid Socket error.

Excepciones

EndSend(IAsyncResult) fue llamado previamente para el envío asincrónico.EndSend(IAsyncResult) was previously called for the asynchronous send.

Error al intentar acceder al socket.An error occurred when attempting to access the socket.

Comentarios

EndSendcompleta la operación de envío asincrónica iniciada en BeginSend.EndSend completes the asynchronous send operation started in BeginSend.

Antes de BeginSendllamar a, debe crear un método de devolución de llamada que AsyncCallback implemente el delegado.Before calling BeginSend, you need to create a callback method that implements the AsyncCallback delegate. Este método de devolución de llamada se ejecuta en un subproceso independiente y lo llama BeginSend el sistema después de que se devuelva.This callback method executes in a separate thread and is called by the system after BeginSend returns. El método de devolución de llamada IAsyncResult debe aceptar el BeginSend devuelto por el método como parámetro.The callback method must accept the IAsyncResult returned by the BeginSend method as a parameter.

Dentro del método IAsyncResult de devolución de llamada AsyncState , llame al método del parámetro para obtener Socketel envío.Within the callback method, call the AsyncState method of the IAsyncResult parameter to obtain the sending Socket. Después de obtener Socket, puede EndSend llamar al método para completar correctamente la operación de envío y devolver el número de bytes enviados.After obtaining the Socket, you can call the EndSend method to successfully complete the send operation and return the number of bytes sent.

Si utiliza un protocolo sin conexión, EndSend se bloqueará hasta que se envíe el datagrama.If you are using a connectionless protocol, EndSend will block until the datagram is sent. Si utiliza un protocolo orientado a la conexión, EndSend se bloqueará hasta que se envíe parte del búfer.If you are using a connection-oriented protocol, EndSend will block until some of the buffer was sent. Si el valor devuelto EndSend de indica que el búfer no se envió por completo, BeginSend vuelva a llamar al método y modifique el búfer para que contenga los datos no enviados.If the return value from EndSend indicates that the buffer was not completely sent, call the BeginSend method again, modifying the buffer to hold the unsent data.

No hay ninguna garantía de que los datos que envíe aparecerán inmediatamente en la red.There is no guarantee that the data you send will appear on the network immediately. Para aumentar la eficacia de la red, el sistema subyacente puede retrasar la transmisión hasta que se recopile una cantidad significativa de datos salientes.To increase network efficiency, the underlying system may delay transmission until a significant amount of outgoing data is collected. Una finalización correcta del BeginSend método significa que el sistema subyacente tiene espacio para almacenar en búfer los datos para un envío de red.A successful completion of the BeginSend method means that the underlying system has had room to buffer your data for a network send.

Nota

Si recibe un SocketException, utilice la SocketException.ErrorCode propiedad para obtener el código de error específico.If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. Después de obtener este código, consulte la documentación del código de error de la API de Windows Sockets versión 2 para obtener una descripción detallada del error.After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

Nota

Todas las operaciones de e/s iniciadas por un subproceso determinado se cancelan cuando finaliza el subproceso.All I/O initiated by a given thread is canceled when that thread exits. Una operación asincrónica pendiente puede producir un error si el subproceso finaliza antes de que se complete la operación.A pending asynchronous operation can fail if the thread exits before the operation completes.

Nota

La finalización correcta de un envío no indica que los datos se han entregado correctamente.The successful completion of a send does not indicate that the data was successfully delivered. Si no hay espacio en búfer disponible en el sistema de transporte para almacenar los datos que se van a transmitir, el envío se bloqueará a menos que el socket se haya colocado en modo de no bloqueo.If no buffer space is available within the transport system to hold the data to be transmitted, send will block unless the socket has been placed in nonblocking mode.

Nota

Este miembro genera información de seguimiento cuando se habilita el seguimiento de red en la aplicación.This member outputs trace information when you enable network tracing in your application. Para obtener más información, consulte seguimiento de red en el .NET Framework.For more information, see Network Tracing in the .NET Framework.

Consulte también:

Se aplica a