TransmitFileOptions Énumération

Définition

L'énumération TransmitFileOptions définit les valeurs utilisées dans les demandes de transfert de fichiers.

Cette énumération prend en charge une combinaison au niveau du bit de ses valeurs membres.

public enum class TransmitFileOptions
[System.Flags]
public enum TransmitFileOptions
[<System.Flags>]
type TransmitFileOptions = 
Public Enum TransmitFileOptions
Héritage
TransmitFileOptions
Attributs

Champs

Disconnect 1

Démarrez une déconnexion de niveau transport lorsque toutes les données de fichiers sont mises en file d'attente en vue de leur transmission. En cas d'utilisation avec ReuseSocket, ces indicateurs rétablissent l'état déconnecté et réutilisable du socket une fois le fichier transmis.

ReuseSocket 2

Le handle de socket peut être réutilisé une fois la demande terminée. Cet indicateur n'est valide que si Disconnect est également spécifié. En cas d'utilisation avec Disconnect, ces indicateurs rétablissent l'état déconnecté et réutilisable du socket une fois le fichier transmis.

UseDefaultWorkerThread 0

Utilisez le thread par défaut pour traiter les longues demandes de transfert de fichiers.

UseKernelApc 32

Utilisez des appels de procédure asynchrone du noyau plutôt que des threads de travail pour traiter les longues demandes de transfert de fichiers. Les longues demandes sont celles qui requièrent plusieurs lectures du fichier ou d'un cache. La demande dépend par conséquent de la taille du fichier et de la longueur spécifiée du paquet d'envoi.

UseSystemThread 16

Utilisez des threads système pour traiter les longues demandes de transfert de fichiers.

WriteBehind 4

Exécutez immédiatement la demande de transfert de fichiers, sans la mettre en attente. Si cet indicateur est spécifié et si le transfert de fichiers réussit, les données sont acceptées par le système, mais pas nécessairement par l'extrémité distante. N'utilisez pas cet indicateur avec les indicateurs Disconnect et ReuseSocket.

Exemples

L’exemple suivant illustre l’utilisation de TransmitFileOptions dans un appel à Socket.SendFile. Le fichier « test.txt » se trouve dans le répertoire racine de l’ordinateur local. Dans cet exemple, un prébuffer et un postbuffer de données sont créés et envoyés à l’hôte distant avec le fichier. Pour utiliser le thread par défaut du système, UseDefaultWorkerThread est spécifié.

// 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();

Remarques

Notes

Les indicateurs Disconnect et ReuseSocket retournent le socket à un état déconnecté et réutilisable après la transmission du fichier. Ces indicateurs ne doivent pas être utilisés sur un socket où la qualité de service (QOS) a été demandée, car le fournisseur de services peut supprimer immédiatement toute qualité de service associée au socket avant la fin du transfert de fichier. La meilleure approche pour un socket prenant en charge QOS consiste à appeler Socket.Close une fois le transfert de fichiers terminé, plutôt que de s’appuyer sur ces indicateurs.

S’applique à