TransmitFileOptions Sabit listesi
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Numaralandırma, TransmitFileOptions dosya aktarım isteklerinde kullanılan değerleri tanımlar.
Bu sabit listesi, üyeleri için bit düzeyinde karşılaştırmayı destekler.
public enum class TransmitFileOptions
[System.Flags]
public enum TransmitFileOptions
[<System.Flags>]
type TransmitFileOptions =
Public Enum TransmitFileOptions
- Devralma
- Öznitelikler
Alanlar
Disconnect | 1 | Tüm dosya verileri iletim için kuyruğa alındıktan sonra aktarım düzeyi bağlantısını kesme işlemini başlatın. ile ReuseSocketkullanıldığında, bu bayraklar dosya aktarıldıktan sonra yuvayı bağlantısı kesilmiş, yeniden kullanılabilir duruma döndürür. |
ReuseSocket | 2 | İstek tamamlandığında yuva tutamacı yeniden kullanılabilir. Bu bayrak yalnızca aynı zamanda belirtilmişse Disconnect geçerlidir. ile Disconnectkullanıldığında, bu bayraklar dosya aktarıldıktan sonra yuvayı bağlantısı kesilmiş, yeniden kullanılabilir duruma döndürür. |
UseDefaultWorkerThread | 0 | Uzun dosya aktarım isteklerini işlemek için varsayılan iş parçacığını kullanın. |
UseKernelApc | 32 | Uzun dosya aktarım isteklerini işlemek için çalışan iş parçacıkları yerine çekirdek zaman uyumsuz yordam çağrılarını (APC) kullanın. Uzun istekler, dosyadan veya önbellekten tek bir okumadan fazlasını gerektiren istekler olarak tanımlanır; bu nedenle istek, dosyanın boyutuna ve gönderme paketinin belirtilen uzunluğuna bağlıdır. |
UseSystemThread | 16 | Uzun dosya aktarım isteklerini işlemek için sistem iş parçacıklarını kullanın. |
WriteBehind | 4 | Bekleyen olmadan dosya aktarım isteğini hemen tamamlayın. Bu bayrak belirtilirse ve dosya aktarımı başarılı olursa, veriler sistem tarafından kabul edilir, ancak uzak uç tarafından kabul edilmeleri gerekmez. Bu bayrağı ve ReuseSocket bayraklarıyla Disconnect kullanmayın. |
Örnekler
Aşağıdaki örnekte çağrısında Socket.SendFilekullanımı TransmitFileOptions
gösterilmektedir. "test.txt" dosyası yerel makinenin kök dizininde bulunur. Bu örnekte, bir ön yükleme ve veri postbuffer oluşturulur ve dosyayla uzak ana bilgisayara gönderilir. Sistemin varsayılan iş parçacığını UseDefaultWorkerThread
kullanmak için belirtilir.
// 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();
Açıklamalar
Not
Bayraklar Disconnect
ve ReuseSocket
dosya aktarıldıktan sonra yuvayı bağlantısı kesilmiş, yeniden kullanılabilir duruma döndürür. Hizmet sağlayıcısı, dosya aktarımı tamamlanmadan önce yuvayla ilişkili herhangi bir hizmet kalitesini hemen silebileceğinden, bu bayraklar hizmet kalitesinin (QOS) istendiği bir yuvada kullanılmamalıdır. QOS özellikli yuva için en iyi yaklaşım, bu bayraklara güvenmek yerine dosya aktarımı tamamlandığında çağrı Socket.Close yapmaktır.