Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Método Socket.SendPacketsAsync (SocketAsyncEventArgs)

 

Publicado: octubre de 2016

Envía una colección de archivos o en memoria búferes de datos de forma asincrónica a una conexión Socket objeto.

Espacio de nombres:   System.Net.Sockets
Ensamblado:  System (en System.dll)

public bool SendPacketsAsync(
	SocketAsyncEventArgs e
)

Parámetros

e
Type: System.Net.Sockets.SocketAsyncEventArgs

La System.Net.Sockets.SocketAsyncEventArgs objeto que se va a utilizar para esta operación de socket asincrónico.

Valor devuelto

Type: System.Boolean

Devuelve true Si la operación de E/S pendiente. El SocketAsyncEventArgs.Completed evento en el e parámetro, se generará cuando se complete la operación.

Devuelve false Si se ha completado la operación de E/S sincrónicamente. En este caso, el SocketAsyncEventArgs.Completed evento en el e no se generará ningún parámetro y el e objeto pasado como un parámetro puede examinarse inmediatamente después de que devuelve la llamada al método para recuperar el resultado de la operación.

Exception Condition
FileNotFoundException

El archivo especificado en el SendPacketsElement.FilePath no se encontró la propiedad.

InvalidOperationException

Una operación de socket ya estaba en curso mediante la System.Net.Sockets.SocketAsyncEventArgs el objeto especificado en el e parámetro.

NotSupportedException

Windows XP o posterior es necesario para este método. Esta excepción también se produce si el Socket no está conectado a un host remoto.

ObjectDisposedException

Se cerró el Socket.

SocketException

Un protocolo sin conexión Socket se está usando y el archivo está enviando supera el tamaño de paquete máximo del transporte subyacente.

El SendPacketsAsync método se utiliza para enviar los búferes de datos de una colección de archivos o en memoria a host remoto. El Socket ya debe estar conectado al host remoto.

Si un System.Net.Sockets.SendPacketsElement hace referencia a un archivo en el directorio de trabajo, que se puede identificar con sólo el nombre del archivo; en caso contrario, se deben especificar la ruta de acceso completa y el nombre del archivo. Se admiten caracteres comodín y nombres de recurso compartido UNC. Si no se encuentra el archivo, FileNotFoundException se produce.

Para recibir una notificación de finalización, debe crear un método de devolución de llamada que implemente el EventHandler < SocketAsyncEventArgs > y adjuntar la devolución de llamada la SocketAsyncEventArgs.Completed eventos.

El SocketAsyncEventArgs.SendPacketsFlags propiedad en el e parámetro proporciona el proveedor de servicios de Windows Sockets información adicional sobre la transferencia de archivos. Para obtener más información acerca de cómo utilizar este parámetro, consulte TransmitFileOptions.

Las siguientes propiedades y eventos en el System.Net.Sockets.SocketAsyncEventArgs objeto son necesarios para llamar correctamente a este método:

El llamador puede establecer la SocketAsyncEventArgs.UserToken propiedad en cualquier objeto de estado de usuario que desee antes de llamar a la SendPacketsAsync (método), por lo que la información pueda recuperarse en el método de devolución de llamada. Si la devolución de llamada necesita más información que un solo objeto, puede crearse una pequeña clase para contener el resto de información de estado necesaria como miembros.

Este método usa la función TransmitPackets de la API de Windows Sockets 2. Para obtener más información sobre la función TransmitPackets y sus marcadores, consulte la documentación de Windows Sockets en MSDN Library.

Si bien está pensado para los protocolos orientados a conexiones, el SendPacketsAsync método funciona para los protocolos sin conexión, siempre que se llame primero a la BeginConnect, Connect, o ConnectAsync método para establecer un host remoto predeterminado. Con protocolos sin conexión, también debe asegurarse de que el tamaño del archivo no supera el tamaño máximo de paquetes del proveedor de servicios subyacente. Si lo hace, no se enviará el datagrama y SendPacketsAsync produce una SocketException excepción.

El SendPacketsAsync método se optimiza según el sistema operativo en el que se utiliza. En las ediciones de Windows server, la SendPacketsAsync método está optimizado para un alto rendimiento.

En las ediciones de cliente de Windows, la SendPacketsAsync método está optimizado para el uso de memoria y recursos mínimo.

El uso de la TransmitFileOptions.UseKernelApc marca en el SocketAsyncEventArgs.SendPacketsFlags propiedad en el e parámetro puede ofrecer ventajas significativas de rendimiento. Si el subproceso que inicia la SendPacketsAsync llamada al método se utiliza para cálculos complejos, es posible, aunque improbable, que APC se impida iniciar. Tenga en cuenta que hay una diferencia entre las APC de núcleo y modo de usuario. APC de kernel se inician cuando un subproceso está en un estado de espera. APC de modo de usuario se inician cuando un subproceso está en un estado de espera íntegra

.NET Framework
Disponible desde 2.0
Volver al principio
Mostrar: