Socket.BeginSendFile Método

Definición

Envía, de forma asincrónica, un archivo a un objeto Socket conectado.

Sobrecargas

BeginSendFile(String, AsyncCallback, Object)

Envía el archivo fileName a un objeto Socket conectado mediante el marcador UseDefaultWorkerThread.

BeginSendFile(String, Byte[], Byte[], TransmitFileOptions, AsyncCallback, Object)

Envía, de forma asincrónica, un archivo y búferes de datos a un objeto Socket conectado.

BeginSendFile(String, AsyncCallback, Object)

Envía el archivo fileName a un objeto Socket conectado mediante el marcador UseDefaultWorkerThread.

public:
 IAsyncResult ^ BeginSendFile(System::String ^ fileName, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginSendFile (string fileName, AsyncCallback? callback, object? state);
public IAsyncResult BeginSendFile (string? fileName, AsyncCallback? callback, object? state);
public IAsyncResult BeginSendFile (string fileName, AsyncCallback callback, object state);
member this.BeginSendFile : string * AsyncCallback * obj -> IAsyncResult
Public Function BeginSendFile (fileName As String, callback As AsyncCallback, state As Object) As IAsyncResult

Parámetros

fileName
String

Cadena con la ruta de acceso y el nombre del archivo que se ha de enviar. Este parámetro puede ser null.

callback
AsyncCallback

Delegado AsyncCallback.

state
Object

Objeto que contiene la información de estado para esta solicitud.

Devoluciones

Objeto IAsyncResult que representa el envío asincrónico.

Excepciones

El objeto Socket se ha cerrado.

El socket no está conectado a un host remoto.

No se encontró el archivo fileName.

Solo .NET Framework y .NET 5 y versiones anteriores: se produjo un error al intentar acceder al socket. Vea la sección de comentarios que figura más abajo.

Comentarios

Importante

Se trata de una API de compatibilidad. No se recomienda usar los métodos de APM (Begin* y End*) para el nuevo desarrollo. En su lugar, use los Taskequivalentes basados en .

Esta sobrecarga envía el archivo fileName sobre el socket. Si fileName está en el directorio local, se puede identificar con solo el nombre del archivo; de lo contrario, se debe especificar la ruta de acceso completa y el nombre del archivo. Caracteres comodín (".. \\myfile.txt") y nombres de recurso compartido UNC ("\\\\shared directory\\myfile.txt") se admiten. Si no se encuentra el archivo, se produce la excepción FileNotFoundException .

Puede pasar una devolución de llamada que se implemente AsyncCallbackBeginSendFile en para recibir una notificación sobre la finalización de la operación. Tenga en cuenta que si la pila de red subyacente completa la operación de forma sincrónica, la devolución de llamada se ejecutará en línea durante la llamada a BeginSendFile. En este caso, la CompletedSynchronously propiedad del devuelto IAsyncResult se establecerá en true para indicar que el método se completó de forma sincrónica. Utilice la AsyncState propiedad de para obtener el objeto de IAsyncResult estado pasado al BeginSendFile método .

La BeginSendFile operación debe completarse llamando al EndSendFile método . Normalmente, el delegado invoca el AsyncCallback método . EndSendFile bloqueará el subproceso que realiza la llamada hasta que se complete la operación.

Aunque está pensado para protocolos orientados a la conexión, BeginSendFile también funciona para protocolos sin conexión, siempre que primero llame al Connect método o BeginConnect para establecer un host remoto predeterminado. Con los protocolos sin conexión, debe asegurarse de que el tamaño del archivo no supera el tamaño máximo del paquete del proveedor de servicios subyacente. Si es así, el datagrama no se envía y BeginSendFile genera una SocketException excepción.

Nota:

Si recibe una SocketException excepción, use la SocketException.ErrorCode propiedad para obtener el código de error específico.

Nota:

Este miembro genera información de seguimiento cuando se habilita el seguimiento de red en la aplicación. Para obtener más información, consulte Seguimiento de red en .NET Framework.

Nota:

El contexto de ejecución (el contexto de seguridad, el usuario suplantado y el contexto de llamada) se almacena en caché para los métodos asincrónicos Socket . Después del primer uso de un contexto determinado (un método asincrónico Socket específico, una instancia específica Socket y una devolución de llamada específica), los usos posteriores de ese contexto verán una mejora del rendimiento.

Se aplica a

BeginSendFile(String, Byte[], Byte[], TransmitFileOptions, AsyncCallback, Object)

Envía, de forma asincrónica, un archivo y búferes de datos a un objeto Socket conectado.

public:
 IAsyncResult ^ BeginSendFile(System::String ^ fileName, cli::array <System::Byte> ^ preBuffer, cli::array <System::Byte> ^ postBuffer, System::Net::Sockets::TransmitFileOptions flags, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginSendFile (string? fileName, byte[]? preBuffer, byte[]? postBuffer, System.Net.Sockets.TransmitFileOptions flags, AsyncCallback? callback, object? state);
public IAsyncResult BeginSendFile (string fileName, byte[] preBuffer, byte[] postBuffer, System.Net.Sockets.TransmitFileOptions flags, AsyncCallback callback, object state);
member this.BeginSendFile : string * byte[] * byte[] * System.Net.Sockets.TransmitFileOptions * AsyncCallback * obj -> IAsyncResult
Public Function BeginSendFile (fileName As String, preBuffer As Byte(), postBuffer As Byte(), flags As TransmitFileOptions, callback As AsyncCallback, state As Object) As IAsyncResult

Parámetros

fileName
String

Cadena con la ruta de acceso y el nombre del archivo que se ha de enviar. Este parámetro puede ser null.

preBuffer
Byte[]

Los datos que se enviarán antes de enviar el archivo. Este parámetro puede ser null.

postBuffer
Byte[]

Los datos que se enviarán después de enviar el archivo. Este parámetro puede ser null.

flags
TransmitFileOptions

Combinación bit a bit de los valores de la enumeración.

callback
AsyncCallback

Delegado AsyncCallback al que invocar una vez completada la operación. Este parámetro puede ser null.

state
Object

Objeto definido por el usuario con información de estado para esta solicitud. Este parámetro puede ser null.

Devoluciones

Objeto IAsyncResult que representa la operación asincrónica.

Excepciones

El objeto Socket se ha cerrado.

Solo .NET Framework y .NET 5 y versiones anteriores: se produjo un error al intentar acceder al socket. Vea la sección de comentarios que figura más abajo.

El sistema operativo no es Windows NT o una versión posterior.

o bien

El socket no está conectado a un host remoto.

No se encontró el archivo fileName.

Comentarios

Importante

Se trata de una API de compatibilidad. No se recomienda usar los métodos de APM (Begin* y End*) para el nuevo desarrollo. En su lugar, use los Taskequivalentes basados en .

Esta sobrecarga requiere el nombre del archivo que desea enviar y una combinación bit a bit de TransmitFileOptions valores. El preBuffer parámetro contiene los datos que quiera precedidos del archivo. postBuffer contiene datos que desea seguir el archivo. Si fileName está en el directorio local, se puede identificar con solo el nombre del archivo; de lo contrario, se debe especificar la ruta de acceso completa y el nombre del archivo. Caracteres comodín (".. \\myfile.txt") y nombres de recurso compartido UNC ("\\\\shared directory\\myfile.txt") se admiten. Si no se encuentra el archivo, se produce la excepción FileNotFoundException .

El flags parámetro proporciona información adicional sobre la transferencia de archivos. Para obtener más información sobre cómo usar este parámetro, vea TransmitFileOptions.

Puede pasar una devolución de llamada que se implemente AsyncCallbackBeginSendFile en para recibir una notificación sobre la finalización de la operación. Tenga en cuenta que si la pila de red subyacente completa la operación de forma sincrónica, la devolución de llamada se ejecutará en línea durante la llamada a BeginSendFile. En este caso, la CompletedSynchronously propiedad del devuelto IAsyncResult se establecerá en true para indicar que el método se completó de forma sincrónica. Utilice la AsyncState propiedad de para obtener el objeto de IAsyncResult estado pasado al BeginSendFile método .

La BeginSendFile operación debe completarse llamando al EndSendFile método . Normalmente, el delegado proporcionado AsyncCallback invoca el método . EndSendFile bloqueará el subproceso que realiza la llamada hasta que se complete la operación.

Aunque está pensado para protocolos orientados a la conexión, BeginSendFile también funciona para protocolos sin conexión, siempre que primero llame al Connect método o BeginConnect para establecer un host remoto predeterminado. Con los protocolos sin conexión, debe asegurarse de que el tamaño del archivo no supera el tamaño máximo del paquete del proveedor de servicios subyacente. Si es así, el datagrama no se envía y BeginSendFile genera una SocketException excepción.

Nota:

Si recibe una SocketException excepción, use la SocketException.ErrorCode propiedad para obtener el código de error específico.

Nota:

Este miembro genera información de seguimiento cuando se habilita el seguimiento de red en la aplicación. Para obtener más información, consulte Seguimiento de red en .NET Framework.

Nota:

El contexto de ejecución (el contexto de seguridad, el usuario suplantado y el contexto de llamada) se almacena en caché para los métodos asincrónicos Socket . Después del primer uso de un contexto determinado (un método asincrónico Socket específico, una instancia específica Socket y una devolución de llamada específica), los usos posteriores de ese contexto verán una mejora del rendimiento.

Se aplica a