TransmitFileOptions Wyliczenie

Definicja

TransmitFileOptionsWyliczenie definiuje wartości używane w żądaniach transferu plików.The TransmitFileOptions enumeration defines values used in file transfer requests.

To wyliczenie ma atrybut FlagsAttribute zezwalający na bitową kombinację jego wartości składowych.

public enum class TransmitFileOptions
[System.Flags]
public enum TransmitFileOptions
[<System.Flags>]
type TransmitFileOptions = 
Public Enum TransmitFileOptions
Dziedziczenie
TransmitFileOptions
Atrybuty

Pola

Disconnect 1

Rozpocznij rozłączenie na poziomie transportu, gdy wszystkie dane pliku zostały umieszczone w kolejce do transmisji.Start a transport-level disconnect after all the file data has been queued for transmission. W przypadku użycia z programem ReuseSocket flagi zwracają gniazdo do stanu odłączonego, wielokrotnego użytku po przesłaniu pliku.When used with ReuseSocket, these flags return the socket to a disconnected, reusable state after the file has been transmitted.

ReuseSocket 2

Uchwyt gniazda może zostać ponownie użyty po zakończeniu żądania.The socket handle may be reused when the request completes. Ta flaga jest prawidłowa tylko wtedy, gdy Disconnect jest także określona.This flag is valid only if Disconnect is also specified. W przypadku użycia z programem Disconnect flagi zwracają gniazdo do stanu odłączonego, wielokrotnego użytku po przesłaniu pliku.When used with Disconnect, these flags return the socket to a disconnected, reusable state after the file has been transmitted.

UseDefaultWorkerThread 0

Użyj domyślnego wątku, aby przetwarzać długotrwałe żądania transferu plików.Use the default thread to process long file transfer requests.

UseKernelApc 32

Użyj asynchronicznych wywołań procedur (APCs) jądra zamiast wątków roboczych, aby przetwarzać długotrwałe żądania transferu plików.Use kernel asynchronous procedure calls (APCs) instead of worker threads to process long file transfer requests. Długotrwałe żądania są definiowane jako żądania, które wymagają więcej niż jednego odczytu z pliku lub pamięci podręcznej; w związku z tym żądanie jest zależne od rozmiaru pliku i określonej długości pakietu do wysłania.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

Użyj wątków systemowych, aby przetwarzać długotrwałe żądania transferu plików.Use system threads to process long file transfer requests.

WriteBehind 4

Ukończ żądanie transferu plików natychmiast, bez oczekiwania.Complete the file transfer request immediately, without pending. Jeśli ta flaga jest określona i transfer plików powiedzie się, dane zostały zaakceptowane przez system, ale niekoniecznie potwierdzone przez zdalne zakończenie.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. Nie używaj tej flagi z Disconnect ReuseSocket flagami i.Do not use this flag with the Disconnect and ReuseSocket flags.

Przykłady

Poniższy przykład ilustruje użycie TransmitFileOptions w wywołaniu Socket.SendFile .The following example demonstrates the use of TransmitFileOptions in a call to Socket.SendFile. Plik "test.txt" znajduje się w katalogu głównym komputera lokalnego.The file "test.txt" is located in the root directory of the local machine. W tym przykładzie jest tworzony i wysyłany do hosta zdalnego i postBuffer danych.In this example, a prebuffer and postbuffer of data are created and sent to the remote host with the file. Aby użyć domyślnego wątku systemu, UseDefaultWorkerThread jest określony.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();

Uwagi

Uwaga

Flagi Disconnect i ReuseSocket zwracają gniazdo do rozłączonego stanu wielokrotnego użytku po przesłaniu pliku.The flags Disconnect and ReuseSocket return the socket to a disconnected, reusable state after the file has been transmitted. Tych flag nie należy używać w gnieździe, w którym zażądano jakości usługi (QOS), ponieważ dostawca usług może natychmiast usunąć wszystkie usługi skojarzone z gniazdem przed ukończeniem transferu plików.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. Najlepszym podejściem do gniazda z obsługą QOS jest wywoływanie Socket.Close po zakończeniu transferu plików zamiast polegania na tych flagach.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.

Dotyczy