TransmitFileOptions Enumeration

Definition

Die TransmitFileOptions-Enumeration definiert Werte, die in Dateiübertragungsanforderungen verwendet werden.The TransmitFileOptions enumeration defines values used in file transfer requests.

Diese Enumeration weist ein FlagsAttribute-Attribut auf, die eine bitweise Kombination der Memberwerte zulässt.

public enum class TransmitFileOptions
[System.Flags]
public enum TransmitFileOptions
type TransmitFileOptions = 
Public Enum TransmitFileOptions
Vererbung
TransmitFileOptions
Attribute

Felder

Disconnect 1

Beginnt, die Verbindung auf Transportebene zu trennen, nachdem alle Dateidaten in die Übertragungswarteschlange gestellt wurden.Start a transport-level disconnect after all the file data has been queued for transmission. Bei Verwendung mit ReuseSocket setzen diese Flags den Socket in einen getrennten, wiederverwendbaren Zustand zurück, nachdem die Datei übertragen wurde.When used with ReuseSocket, these flags return the socket to a disconnected, reusable state after the file has been transmitted.

ReuseSocket 2

Das Sockethandle kann nach Abschluss der Anforderung wiederverwendet werden.The socket handle may be reused when the request completes. Dieses Flag ist nur gültig, wenn auch Disconnect angegeben wird.This flag is valid only if Disconnect is also specified. Bei Verwendung mit Disconnect setzen diese Flags den Socket in einen getrennten, wiederverwendbaren Zustand zurück, nachdem die Datei übertragen wurde.When used with Disconnect, these flags return the socket to a disconnected, reusable state after the file has been transmitted.

UseDefaultWorkerThread 0

Verwendet den Standardthread, um umfangreiche Dateiübertragungsanforderungen zu verarbeiten.Use the default thread to process long file transfer requests.

UseKernelApc 32

Verwendet zum Verarbeiten umfangreicher Dateiübertragungsanforderungen Kernel-APCs (Asynchronous Procedure Calls, asynchrone Prozeduraufrufe) anstelle von Arbeitsthreads.Use kernel asynchronous procedure calls (APCs) instead of worker threads to process long file transfer requests. Umfangreiche Anforderungen sind als Anforderungen definiert, die mehrere Lesevorgänge aus der Datei oder einem Cache erfordern. Die Anforderung hängt daher von der Dateigröße und der angegebenen Länge des zu sendenden Pakets ab.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 16

Verwendet Systemthreads, um umfangreiche Dateiübertragungsanforderungen zu verarbeiten.Use system threads to process long file transfer requests.

WriteBehind 4

Führt die Dateiübertragungsanforderung unverzüglich aus.Complete the file transfer request immediately, without pending. Wenn dieses Flag angegeben und die Dateiübertragung erfolgreich ausgeführt wurde, wurden die Daten vom System akzeptiert, jedoch nicht unbedingt durch die Remoteseite bestätigt.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. Verwenden Sie dieses Flag nicht zusammen mit dem Disconnect-Flag und dem ReuseSocket-Flag.Do not use this flag with the Disconnect and ReuseSocket flags.

Beispiele

Im folgenden Beispiel wird die Verwendung von TransmitFileOptions in einem Socket.SendFile-Befehl veranschaulicht.The following example demonstrates the use of TransmitFileOptions in a call to Socket.SendFile. Die Datei "Test. txt" befindet sich im Stammverzeichnis des lokalen Computers.The file "test.txt" is located in the root directory of the local machine. In diesem Beispiel werden ein präpuffer und ein postBuffer von Daten erstellt und mit der Datei an den Remote Host gesendet.In this example, a prebuffer and postbuffer of data are created and sent to the remote host with the file. Um den Standard Thread des Systems zu verwenden UseDefaultWorkerThread , wird angegeben.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();

Hinweise

Hinweis

Die Flags Disconnect und ReuseSocket geben den Socket an einen getrennten, wiederverwendbaren Zustand zurück, nachdem die Datei übertragen wurde.The flags Disconnect and ReuseSocket return the socket to a disconnected, reusable state after the file has been transmitted. Diese Flags sollten nicht für einen Socket verwendet werden, bei dem die Dienst Qualität (Quality of Service, QoS) angefordert wurde, da der Dienstanbieter möglicherweise alle Quality of Service-Dienste, die dem Socket zugeordnet sind, sofort löscht, bevor die Dateiübertragung abgeschlossen wurde.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. Der beste Ansatz für einen QoS-fähigen Socket besteht darin, Socket.Close aufzurufen, wenn die Dateiübertragung abgeschlossen ist, anstatt diese Flags zu verlassen.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.

Gilt für: