TransmitFileOptions Enum
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
De TransmitFileOptions opsomming definieert waarden die worden gebruikt in bestandsoverdrachtsaanvragen.
Deze opsomming ondersteunt een bitsgewijze combinatie van de waarden van de leden.
public enum class TransmitFileOptions
[System.Flags]
public enum TransmitFileOptions
[<System.Flags>]
type TransmitFileOptions =
Public Enum TransmitFileOptions
- Overname
- Kenmerken
Velden
| Name | Waarde | Description |
|---|---|---|
| UseDefaultWorkerThread | 0 | Gebruik de standaardthread om aanvragen voor lange bestandsoverdracht te verwerken. |
| Disconnect | 1 | Start de verbinding op transportniveau nadat alle bestandsgegevens in de wachtrij zijn geplaatst voor verzending. Wanneer deze vlaggen worden ReuseSocketgebruikt, retourneren deze vlaggen de socket naar een niet-verbonden, herbruikbare status nadat het bestand is verzonden. |
| ReuseSocket | 2 | De socket-ingang kan opnieuw worden gebruikt wanneer de aanvraag is voltooid. Deze vlag is alleen geldig als Disconnect deze ook is opgegeven. Wanneer deze vlaggen worden Disconnectgebruikt, retourneren deze vlaggen de socket naar een niet-verbonden, herbruikbare status nadat het bestand is verzonden. |
| WriteBehind | 4 | Voltooi de aanvraag voor bestandsoverdracht onmiddellijk, zonder in behandeling te zijn. Als deze vlag is opgegeven en de bestandsoverdracht slaagt, zijn de gegevens geaccepteerd door het systeem, maar niet noodzakelijkerwijs bevestigd door het externe einde. Gebruik deze vlag niet met de Disconnect en ReuseSocket vlaggen. |
| UseSystemThread | 16 | Systeemthreads gebruiken om aanvragen voor lange bestandsoverdracht te verwerken. |
| UseKernelApc | 32 | Gebruik asynchrone procedureaanroepen (APC's) van kernels in plaats van werkthreads om aanvragen voor lange bestandsoverdracht te verwerken. Lange aanvragen worden gedefinieerd als aanvragen die meer dan één leesbewerking van het bestand of een cache vereisen; de aanvraag is daarom afhankelijk van de grootte van het bestand en de opgegeven lengte van het verzendpakket. |
Voorbeelden
In het volgende voorbeeld ziet u het gebruik van TransmitFileOptions in een aanroep naar Socket.SendFile. Het bestandtest.txtbevindt zich in de hoofdmap van de lokale computer. In dit voorbeeld worden een prebuffer en postbuffer met gegevens gemaakt en verzonden naar de externe host met het bestand. Als u de standaardthread van het systeem wilt gebruiken, UseDefaultWorkerThread wordt opgegeven.
// 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();
Opmerkingen
Note
De vlaggen Disconnect en ReuseSocket retourneren de socket naar een niet-verbonden, herbruikbare status nadat het bestand is verzonden. Deze vlaggen mogen niet worden gebruikt op een socket waar QOS (Quality of Service) is aangevraagd, omdat de serviceprovider mogelijk onmiddellijk alle kwaliteit van de service verwijdert die is gekoppeld aan de socket voordat de bestandsoverdracht is voltooid. De beste methode voor een QOS-socket is om aan te roepen Socket.Close wanneer de bestandsoverdracht is voltooid, in plaats van te vertrouwen op deze vlaggen.