TransmitFileOptions Wyliczenie

Definicja

Wyliczenie TransmitFileOptions definiuje wartości używane w żądaniach transferu plików.

To wyliczenie obsługuje 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

Uruchom rozłączenie na poziomie transportu, gdy wszystkie dane plików zostały w kolejce do transmisji. W przypadku użycia z programem ReuseSocketflagi te zwracają gniazdo do rozłączonego stanu wielokrotnego użytku po przesłaniu pliku.

ReuseSocket 2

Uchwyt gniazda może zostać ponownie użyty po zakończeniu żądania. Ta flaga jest prawidłowa tylko wtedy, gdy Disconnect jest również określona. W przypadku użycia z programem Disconnectflagi te zwracają gniazdo do rozłączonego stanu wielokrotnego użytku po przesłaniu pliku.

UseDefaultWorkerThread 0

Użyj domyślnego wątku do przetwarzania długich żądań transferu plików.

UseKernelApc 32

Użyj asynchronicznych wywołań procedury jądra (APCs) zamiast wątków roboczych do przetwarzania długich żądań transferu plików. Długie żądania są definiowane jako żądania wymagające więcej niż jednego odczytu z pliku lub pamięci podręcznej; w związku z tym żądanie zależy od rozmiaru pliku i określonej długości pakietu wysyłania.

UseSystemThread 16

Używanie wątków systemowych do przetwarzania długich żądań transferu plików.

WriteBehind 4

Natychmiast ukończ żądanie transferu plików bez oczekiwania. Jeśli ta flaga zostanie określona i transfer plików zakończy się powodzeniem, dane zostały zaakceptowane przez system, ale niekoniecznie potwierdzone przez zdalny koniec. Nie używaj tej flagi Disconnect z flagami i ReuseSocket .

Przykłady

W poniższym przykładzie pokazano użycie TransmitFileOptions metody w wywołaniu metody Socket.SendFile. Plik "test.txt" znajduje się w katalogu głównym komputera lokalnego. W tym przykładzie tworzona jest prebuffer i postbuffer danych oraz wysyłana do hosta zdalnego za pomocą pliku. Aby użyć domyślnego wątku systemu, UseDefaultWorkerThread jest określony.

// 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 odłączonego stanu wielokrotnego użytku po przesłaniu pliku. Te flagi nie powinny być używane w gniazdku, w którym zażądano jakości usługi (QOS), ponieważ dostawca usług może natychmiast usunąć wszelkie usługi skojarzone z gniazdem przed zakończeniem transferu plików. Najlepszym rozwiązaniem dla gniazda z obsługą systemu QOS jest wywołanie Socket.Close po zakończeniu transferu plików, zamiast polegać na tych flagach.

Dotyczy