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

Nom Valeur Description
UseDefaultWorkerThread 0

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

Disconnect 1

Démarrez une déconnexion au niveau du transport une fois que toutes les données de fichier ont été mises en file d’attente pour la transmission. Lorsqu’ils sont utilisés avec ReuseSocket, ces indicateurs retournent le socket à un état déconnecté et réutilisable une fois le fichier transmis.

ReuseSocket 2

Le handle de socket peut être réutilisé lorsque la requête est terminée. Cet indicateur est valide uniquement s’il Disconnect est également spécifié. Lorsqu’ils sont utilisés avec Disconnect, ces indicateurs retournent le socket à un état déconnecté et réutilisable une fois le fichier transmis.

WriteBehind 4

Terminez immédiatement la demande de transfert de fichier, sans attente. Si cet indicateur est spécifié et que le transfert de fichiers réussit, les données ont été acceptées par le système, mais pas nécessairement reconnues par la fin distante. N’utilisez pas cet indicateur avec les indicateurs et ReuseSocket les Disconnect indicateurs.

UseSystemThread 16

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

UseKernelApc 32

Utilisez des appels de procédure asynchrone du noyau au lieu de threads de travail pour traiter les demandes de transfert de fichiers longues. Les requêtes longues sont définies en tant que requêtes nécessitant plus d’une seule lecture à partir du fichier ou d’un cache ; la demande dépend donc de la taille du fichier et de la longueur spécifiée du paquet d’envoi.

Exemples

L’exemple suivant illustre l’utilisation dans TransmitFileOptions 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 = 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

Note

Disconnect Indicateurs et ReuseSocket retour du socket à un état déconnecté et réutilisable une fois le fichier transmis. 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 immédiatement supprimer toute qualité de service associée au socket avant la fin du transfert de fichiers. La meilleure approche pour un socket compatible QOS consiste à appeler Socket.Close une fois le transfert de fichiers terminé, plutôt que de s’appuyer sur ces indicateurs.

S’applique à