TransmitFileOptions Enum

Definisi

Enumerasi TransmitFileOptions menentukan nilai yang digunakan dalam permintaan transfer file.

Enumerasi ini mendukung kombinasi bitwise dari nilai yang termasuk di dalamnya.

public enum class TransmitFileOptions
[System.Flags]
public enum TransmitFileOptions
[<System.Flags>]
type TransmitFileOptions = 
Public Enum TransmitFileOptions
Warisan
TransmitFileOptions
Atribut

Bidang

Disconnect 1

Mulai pemutusan tingkat transportasi setelah semua data file diantrekan untuk transmisi. Ketika digunakan dengan ReuseSocket, bendera ini mengembalikan soket ke status terputus dan dapat digunakan kembali setelah file dikirimkan.

ReuseSocket 2

Handel soket dapat digunakan kembali saat permintaan selesai. Bendera ini hanya valid jika Disconnect juga ditentukan. Ketika digunakan dengan Disconnect, bendera ini mengembalikan soket ke status terputus dan dapat digunakan kembali setelah file dikirimkan.

UseDefaultWorkerThread 0

Gunakan utas default untuk memproses permintaan transfer file yang panjang.

UseKernelApc 32

Gunakan panggilan prosedur asinkron kernel (APC) alih-alih utas pekerja untuk memproses permintaan transfer file yang panjang. Permintaan panjang didefinisikan sebagai permintaan yang memerlukan lebih dari satu bacaan dari file atau cache; oleh karena itu, permintaan tergantung pada ukuran file dan panjang paket kirim yang ditentukan.

UseSystemThread 16

Gunakan utas sistem untuk memproses permintaan transfer file yang panjang.

WriteBehind 4

Selesaikan permintaan transfer file segera, tanpa tertunda. Jika bendera ini ditentukan dan transfer file berhasil, data telah diterima oleh sistem tetapi belum tentu diakui oleh ujung jarak jauh. Jangan gunakan bendera ini dengan Disconnect bendera dan ReuseSocket .

Contoh

Contoh berikut menunjukkan penggunaan TransmitFileOptions dalam panggilan ke Socket.SendFile. File "test.txt" terletak di direktori akar komputer lokal. Dalam contoh ini, prebuffer dan postbuffer data dibuat dan dikirim ke host jarak jauh dengan file . Untuk menggunakan utas default sistem, UseDefaultWorkerThread ditentukan.

// 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();

Keterangan

Catatan

Bendera Disconnect dan ReuseSocket mengembalikan soket ke status terputus dan dapat digunakan kembali setelah file dikirimkan. Bendera ini tidak boleh digunakan pada soket tempat kualitas layanan (QOS) diminta, karena penyedia layanan mungkin segera menghapus kualitas layanan apa pun yang terkait dengan soket sebelum transfer file selesai. Pendekatan terbaik untuk soket berkemampuan QOS adalah memanggil Socket.Close ketika transfer file telah selesai, daripada mengandalkan bendera ini.

Berlaku untuk