TransmitFileOptions TransmitFileOptions TransmitFileOptions TransmitFileOptions Enum

Definición

La enumeración TransmitFileOptions define valores utilizados en solicitudes de transferencia de archivos.The TransmitFileOptions enumeration defines values used in file transfer requests.

Esta enumeración tiene el atributo FlagsAttribute, que permite una combinación bit a bit de sus valores de miembro.

public enum class TransmitFileOptions
[System.Flags]
public enum TransmitFileOptions
type TransmitFileOptions = 
Public Enum TransmitFileOptions
Herencia
TransmitFileOptionsTransmitFileOptionsTransmitFileOptionsTransmitFileOptions
Atributos

Campos

Disconnect Disconnect Disconnect Disconnect 1

Inicia una desconexión de nivel de transporte después de que todos los datos de archivos se han colocado en la cola para la transmisión.Start a transport-level disconnect after all the file data has been queued for transmission. Cuando se utiliza con ReuseSocket, estos marcadores devuelven el socket a un estado desconectado y reutilizable después de que se ha transmitido el archivo.When used with ReuseSocket, these flags return the socket to a disconnected, reusable state after the file has been transmitted.

ReuseSocket ReuseSocket ReuseSocket ReuseSocket 2

Se puede reutilizar el identificador del socket cuando la solicitud finaliza.The socket handle may be reused when the request completes. Este marcador sólo es válido si también se especifica Disconnect.This flag is valid only if Disconnect is also specified. Cuando se utiliza con Disconnect, estos marcadores devuelven el socket a un estado desconectado y reutilizable después de que se ha transmitido el archivo.When used with Disconnect, these flags return the socket to a disconnected, reusable state after the file has been transmitted.

UseDefaultWorkerThread UseDefaultWorkerThread UseDefaultWorkerThread UseDefaultWorkerThread 0

Utilice el subproceso predeterminado para procesar las solicitudes de transferencia de archivos largas.Use the default thread to process long file transfer requests.

UseKernelApc UseKernelApc UseKernelApc UseKernelApc 32

Utilice llamadas a procedimientos asincrónicos (APC) del kernel, en lugar de subprocesos de trabajo, para procesar las solicitudes largas de transferencia de archivos.Use kernel asynchronous procedure calls (APCs) instead of worker threads to process long file transfer requests. Las solicitudes largas se definen como solicitudes que requieren más de una lectura del archivo o de una caché; la solicitud depende, por tanto, del tamaño del archivo y de la longitud especificada del paquete de envío.Long requests are defined as requests that require more than a single read from the file or a cache; the request therefore depends on the size of the file and the specified length of the send packet.

UseSystemThread UseSystemThread UseSystemThread UseSystemThread 16

Utilice el subproceso del sistema para procesar las solicitudes largas de transferencia de archivos.Use system threads to process long file transfer requests.

WriteBehind WriteBehind WriteBehind WriteBehind 4

Finaliza la solicitud de la transferencia de archivos de forma inmediata y completa.Complete the file transfer request immediately, without pending. Si se especifica este marcador y la transferencia de archivos se realiza, el sistema ha aceptado los datos pero no han sido necesariamente confirmados por el fin remoto.If this flag is specified and the file transfer succeeds, the data has been accepted by the system but not necessarily acknowledged by the remote end. No utilice este marcador con marcadores Disconnect y ReuseSocket.Do not use this flag with the Disconnect and ReuseSocket flags.

Ejemplos

En el ejemplo siguiente se muestra el TransmitFileOptions uso de en una Socket.SendFilellamada a.The following example demonstrates the use of TransmitFileOptions in a call to Socket.SendFile. El archivo "test. txt" se encuentra en el directorio raíz del equipo local.The file "test.txt" is located in the root directory of the local machine. En este ejemplo, se crean un búfer y un búfer de datos, y se envían al host remoto con el archivo.In this example, a prebuffer and postbuffer of data are created and sent to the remote host with the file. Para usar el subproceso predeterminado del sistema UseDefaultWorkerThread , se especifica.To use the system's default thread, UseDefaultWorkerThread is specified.

// Establish the local endpoint for the socket.
IPHostEntry^ ipHost = Dns::GetHostEntry( Dns::GetHostName() );
IPAddress^ ipAddr = ipHost->AddressList[ 0 ];
IPEndPoint^ ipEndPoint = gcnew IPEndPoint( ipAddr,11000 );

// Create a TCP socket.
Socket^ client = gcnew Socket( AddressFamily::InterNetwork,SocketType::Stream,ProtocolType::Tcp );

// Connect the socket to the remote endpoint.
client->Connect( ipEndPoint );

// Send file fileName to the remote host with preBuffer and postBuffer data.
// There is a text file test.txt located in the root directory.
String^ fileName = "C:\\test.txt";

// Create the preBuffer data.
String^ string1 = String::Format( "This is text data that precedes the file.{0}", Environment::NewLine );
array<Byte>^preBuf = Encoding::ASCII->GetBytes( string1 );

// Create the postBuffer data.
String^ string2 = String::Format( "This is text data that will follow the file.{0}", Environment::NewLine );
array<Byte>^postBuf = Encoding::ASCII->GetBytes( string2 );

//Send file fileName with buffers and default flags to the remote device.
Console::WriteLine( "Sending {0} with buffers to the host.{1}", fileName, Environment::NewLine );
client->SendFile( fileName, preBuf, postBuf, TransmitFileOptions::UseDefaultWorkerThread );

// Release the socket.
client->Shutdown( SocketShutdown::Both );
client->Close();
     // Establish the local endpoint for the socket.
     IPHostEntry ipHost = Dns.GetHostEntry(Dns.GetHostName());
     IPAddress  ipAddr = ipHost.AddressList[0];
     IPEndPoint ipEndPoint = new IPEndPoint(ipAddr, 11000);

     // Create a TCP socket.
     Socket client = new Socket(AddressFamily.InterNetwork,
             SocketType.Stream, ProtocolType.Tcp);

     // Connect the socket to the remote endpoint.
     client.Connect(ipEndPoint);

     // Send file fileName to the remote host with preBuffer and postBuffer data.
     // There is a text file test.txt located in the root directory.
     string fileName = "C:\\test.txt";

     // Create the preBuffer data.
     string string1 = String.Format("This is text data that precedes the file.{0}", Environment.NewLine);
     byte[] preBuf = Encoding.ASCII.GetBytes(string1);

     // Create the postBuffer data.
     string string2 = String.Format("This is text data that will follow the file.{0}", Environment.NewLine);
     byte[] postBuf = Encoding.ASCII.GetBytes(string2);

     //Send file fileName with buffers and default flags to the remote device.
     Console.WriteLine("Sending {0} with buffers to the host.{1}", fileName, Environment.NewLine);
     client.SendFile(fileName, preBuf, postBuf, TransmitFileOptions.UseDefaultWorkerThread);

     // Release the socket.
     client.Shutdown(SocketShutdown.Both);
     client.Close();

Comentarios

Nota

Las marcas Disconnect y ReuseSocket devuelven el socket a un estado desconectado y reutilizable después de que se haya transmitido el archivo.The flags Disconnect and ReuseSocket return the socket to a disconnected, reusable state after the file has been transmitted. Estas marcas no se deben usar en un socket en el que se ha solicitado calidad de servicio (QOS), ya que el proveedor de servicios puede eliminar inmediatamente cualquier calidad de servicio asociada al socket antes de que se haya completado la transferencia de archivos.These flags should not be used on a socket where quality of service (QOS) has been requested, because the service provider might immediately delete any quality of service associated with the socket before the file transfer has completed. El mejor enfoque para un socket habilitado para QoS es llamar Socket.Close a cuando se ha completado la transferencia de archivos, en lugar de depender de estas marcas.The best approach for a QOS-enabled socket is to call Socket.Close when the file transfer has completed, rather than relying on these flags.

Se aplica a