Socket.BeginSendFile 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í.
Envía, de forma asincrónica, un archivo a un objeto Socket conectado.
Sobrecargas
BeginSendFile(String, AsyncCallback, Object) |
Envía el archivo |
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)
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
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 Task
equivalentes basados en .
Esta sobrecarga envía el archivo fileName
a través del 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") son compatibles. Si no se encuentra el archivo, se produce la excepción FileNotFoundException .
Puede pasar una devolución de llamada que se AsyncCallbackBeginSendFile implemente 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á true
en para indicar que el método se completó sincrónicamente. Utilice la AsyncState propiedad de IAsyncResult para obtener el objeto de 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 Connect al 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 produce 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, vea 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)
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
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 Task
equivalentes 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 desea preceder al 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") son compatibles. 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 AsyncCallbackBeginSendFile implemente 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á true
en para indicar que el método se completó sincrónicamente. Utilice la AsyncState propiedad de IAsyncResult para obtener el objeto de 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 Connect al 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 produce 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, vea 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.