TransmitFileOptions Enumeration

Definition

Die TransmitFileOptions-Enumeration definiert Werte, die in Dateiübertragungsanforderungen verwendet werden.

Diese Enumeration unterstützt eine bitweise Kombination ihrer Memberwerte.

public enum class TransmitFileOptions
[System.Flags]
public enum TransmitFileOptions
[<System.Flags>]
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. Bei Verwendung mit ReuseSocket setzen diese Flags den Socket in einen getrennten, wiederverwendbaren Zustand zurück, nachdem die Datei übertragen wurde.

ReuseSocket 2

Das Sockethandle kann nach Abschluss der Anforderung wiederverwendet werden. Dieses Flag ist nur gültig, wenn auch Disconnect angegeben wird. Bei Verwendung mit Disconnect setzen diese Flags den Socket in einen getrennten, wiederverwendbaren Zustand zurück, nachdem die Datei übertragen wurde.

UseDefaultWorkerThread 0

Verwendet den Standardthread, um umfangreiche Dateiübertragungsanforderungen zu verarbeiten.

UseKernelApc 32

Verwendet zum Verarbeiten umfangreicher Dateiübertragungsanforderungen Kernel-APCs (Asynchronous Procedure Calls, asynchrone Prozeduraufrufe) anstelle von Arbeitsthreads. 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.

UseSystemThread 16

Verwendet Systemthreads, um umfangreiche Dateiübertragungsanforderungen zu verarbeiten.

WriteBehind 4

Führt die Dateiübertragungsanforderung unverzüglich aus. 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. Verwenden Sie dieses Flag nicht zusammen mit dem Disconnect-Flag und dem ReuseSocket-Flag.

Beispiele

Im folgenden Beispiel wird die Verwendung von in einem Aufruf von TransmitFileOptionsSocket.SendFileveranschaulicht. Die Datei "test.txt" befindet sich im Stammverzeichnis des lokalen Computers. In diesem Beispiel werden ein Prebuffer und ein Postbuffer von Daten erstellt und mit der Datei an den Remotehost gesendet. Um den Standardthread des Systems zu verwenden, UseDefaultWorkerThread wird angegeben.

// 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 und ReuseSocket versetzen den Socket in einen getrenntenDisconnect, wiederverwendbaren Zustand zurück, nachdem die Datei übertragen wurde. Diese Flags sollten nicht für einen Socket verwendet werden, in dem QOS (Quality of Service, Quality of Service) angefordert wurde, da der Dienstanbieter alle mit dem Socket verknüpften Dienstqualitäten sofort löschen kann, bevor die Dateiübertragung abgeschlossen ist. Der beste Ansatz für einen QOS-fähigen Socket besteht darin, nach Abschluss der Dateiübertragung aufzurufen Socket.Close , anstatt sich auf diese Flags zu verlassen.

Gilt für: