TransmitFileOptions Výčet
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Výčet TransmitFileOptions definuje hodnoty používané v požadavcích na přenos souborů.
Tento výčet podporuje bitové kombinace hodnot jeho členů.
public enum class TransmitFileOptions
[System.Flags]
public enum TransmitFileOptions
[<System.Flags>]
type TransmitFileOptions =
Public Enum TransmitFileOptions
- Dědičnost
- Atributy
Pole
Disconnect | 1 | Jakmile jsou všechna data souboru zařazena do fronty pro přenos, spusťte odpojení na úrovni přenosu. Při použití s ReuseSocket, vrátí tyto příznaky soket do odpojeného a opakovaně použitelného stavu po přenosu souboru. |
ReuseSocket | 2 | Popisovač soketu může být po dokončení požadavku znovu použit. Tento příznak je platný pouze v případě, že Disconnect je také zadán. Při použití s Disconnect, vrátí tyto příznaky soket do odpojeného a opakovaně použitelného stavu po přenosu souboru. |
UseDefaultWorkerThread | 0 | Pomocí výchozího vlákna můžete zpracovávat žádosti o dlouhý přenos souborů. |
UseKernelApc | 32 | K zpracování požadavků na přenos souborů s dlouhými přenosy souborů používejte místo pracovních vláken asynchronní volání procedur jádra (APC). Dlouhé požadavky jsou definovány jako požadavky, které vyžadují více než jedno čtení ze souboru nebo mezipaměti. požadavek proto závisí na velikosti souboru a zadané délce odesílaného paketu. |
UseSystemThread | 16 | Pomocí systémových vláken můžete zpracovávat dlouhé žádosti o přenos souborů. |
WriteBehind | 4 | Dokončete žádost o přenos souborů okamžitě bez čekání. Pokud je tento příznak zadán a přenos souboru bude úspěšný, byla data přijata systémem, ale vzdálený konec je nemusí nutně potvrdit. Nepoužívejte tento příznak s Disconnect příznaky a ReuseSocket . |
Příklady
Následující příklad ukazuje použití při TransmitFileOptions
volání .Socket.SendFile Soubor "test.txt" se nachází v kořenovém adresáři místního počítače. V tomto příkladu se vytvoří prebuffer a postbuffer dat a odešle se na vzdáleného hostitele se souborem. Pokud chcete použít výchozí vlákno systému, UseDefaultWorkerThread
je zadáno.
// 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();
Poznámky
Poznámka
Označí Disconnect
a ReuseSocket
vrátí soket do odpojeného a opakovaně použitelného stavu po odeslání souboru. Tyto příznaky by se neměly používat na soketu, kde je požadována technologie QOS (Quality of Service), protože poskytovatel služeb může okamžitě odstranit kvalitu služby přidružené k soketu před dokončením přenosu souboru. Nejlepší přístup pro soket s podporou QOS je volat Socket.Close po dokončení přenosu souboru, a nespoléhat se na tyto příznaky.
Platí pro
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro