Socket.EndSend Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Finaliza un envío asincrónico pendiente.
Sobrecargas
| Nombre | Description |
|---|---|
| EndSend(IAsyncResult) |
Finaliza un envío asincrónico pendiente. |
| EndSend(IAsyncResult, SocketError) |
Finaliza un envío asincrónico pendiente. |
EndSend(IAsyncResult)
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
Finaliza un envío asincrónico pendiente.
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
que IAsyncResult almacena información de estado para esta operación asincrónica.
Devoluciones
Si se ejecuta correctamente, el número de bytes enviados a Socket; de lo contrario, un error no válido Socket .
Excepciones
asyncResult es null.
asyncResult no se devolvió mediante una llamada al BeginSend(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object) método .
EndSend(IAsyncResult) anteriormente se llamó a para el envío asincrónico.
Solo .NET Framework, .NET Core y .NET 5-6: Socket se ha cerrado .
Comentarios
Importante
Se trata de una API de compatibilidad. No se recomienda usar los métodos APM (Begin* y End*) para el nuevo desarrollo. En su lugar, use los Taskequivalentes basados en .
EndSend completa la operación iniciada por BeginSend. Debe pasar el IAsyncResult objeto creado por la llamada coincidente BeginSend .
Si usa un protocolo sin conexión, EndSend se bloqueará hasta que se envíe el datagrama. Si usa un protocolo orientado a la conexión, EndSend se bloqueará hasta que se envíe parte del búfer. Si el valor devuelto de EndSend indica que el búfer no se envió completamente, llame al BeginSend método de nuevo, modificando el búfer para contener los datos no enviados.
No hay ninguna garantía de que los datos que envíe aparecerán en la red inmediatamente. 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. Una finalización correcta del BeginSend método significa que el sistema subyacente ha tenido espacio para almacenar en búfer los datos de un envío de red.
Nota:
Si recibe un SocketException, use la SocketException.ErrorCode propiedad para obtener el código de error específico.
Nota:
Todas las E/S iniciadas por un subproceso determinado se cancelan cuando se cierra ese subproceso. Se puede producir un error en una operación asincrónica pendiente si el subproceso se cierra antes de que se complete la operación.
Nota:
La finalización correcta de un envío no indica que los datos se entregaron correctamente. Si no hay ningún espacio de búfer disponible en el sistema de transporte para contener 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.
Nota:
Este miembro genera información de seguimiento al habilitar el seguimiento de red en la aplicación. Para obtener más información, consulte Seguimiento de red en .NET Framework.
Consulte también
- BeginSend(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object)
- AsyncCallback
- AsyncState
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
- NoDelay
Se aplica a
EndSend(IAsyncResult, SocketError)
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
Finaliza un envío asincrónico pendiente.
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
que IAsyncResult almacena información de estado para esta operación asincrónica.
- errorCode
- SocketError
Objeto SocketError que almacena el error de socket.
Devoluciones
Si se ejecuta correctamente, el número de bytes enviados a Socket; de lo contrario, un error no válido Socket .
Excepciones
asyncResult es null.
asyncResult no se devolvió mediante una llamada al BeginSend(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object) método .
EndSend(IAsyncResult) anteriormente se llamó a para el envío asincrónico.
Solo .NET Framework, .NET Core y .NET 5-6: Socket se ha cerrado .
Comentarios
Importante
Se trata de una API de compatibilidad. No se recomienda usar los métodos APM (Begin* y End*) para el nuevo desarrollo. En su lugar, use los Taskequivalentes basados en .
EndSend completa la operación iniciada por BeginSend. Debe pasar el IAsyncResult objeto creado por la llamada coincidente BeginSend .
Si usa un protocolo sin conexión, EndSend se bloqueará hasta que se envíe el datagrama. Si usa un protocolo orientado a la conexión, EndSend se bloqueará hasta que se envíe parte del búfer. Si el valor devuelto de EndSend indica que el búfer no se envió completamente, llame al BeginSend método de nuevo, modificando el búfer para contener los datos no enviados.
No hay ninguna garantía de que los datos que envíe aparecerán en la red inmediatamente. 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. Una finalización correcta del BeginSend método significa que el sistema subyacente ha tenido espacio para almacenar en búfer los datos de un envío de red.
Nota:
Si recibe un SocketException, use la SocketException.ErrorCode propiedad para obtener el código de error específico.
Nota:
Todas las E/S iniciadas por un subproceso determinado se cancelan cuando se cierra ese subproceso. Se puede producir un error en una operación asincrónica pendiente si el subproceso se cierra antes de que se complete la operación.
Nota:
La finalización correcta de un envío no indica que los datos se entregaron correctamente. Si no hay ningún espacio de búfer disponible en el sistema de transporte para contener 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.
Nota:
Este miembro genera información de seguimiento al habilitar el seguimiento de red en la aplicación. Para obtener más información, consulte Seguimiento de red en .NET Framework.
Consulte también
- BeginSend(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object)
- AsyncCallback
- AsyncState
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
- NoDelay