TransmitFileOptions TransmitFileOptions TransmitFileOptions TransmitFileOptions Enum

Definizione

L'enumerazione TransmitFileOptions definisce i valori utilizzati nelle richieste di trasferimento dei file.The TransmitFileOptions enumeration defines values used in file transfer requests.

Questa enumerazione ha un attributo FlagsAttribute che consente una combinazione bit per bit dei valori del relativo membro.

public enum class TransmitFileOptions
[System.Flags]
public enum TransmitFileOptions
type TransmitFileOptions = 
Public Enum TransmitFileOptions
Ereditarietà
TransmitFileOptionsTransmitFileOptionsTransmitFileOptionsTransmitFileOptions
Attributi

Campi

Disconnect Disconnect Disconnect Disconnect 1

Avviare una disconnessione a livello di trasporto dopo che tutti i dati dei file sono stati accodati per la trasmissione.Start a transport-level disconnect after all the file data has been queued for transmission. Se utilizzati con ReuseSocket, i flag riportano il socket a uno stato disconnesso consentendone il riutilizzo.When used with ReuseSocket, these flags return the socket to a disconnected, reusable state after the file has been transmitted.

ReuseSocket ReuseSocket ReuseSocket ReuseSocket 2

L'handle del socket può essere riutilizzato una volta completata la richiesta.The socket handle may be reused when the request completes. Questo flag è valido solo se viene specificato anche Disconnect.This flag is valid only if Disconnect is also specified. Se utilizzati con Disconnect, i flag riportano il socket a uno stato disconnesso consentendone il riutilizzo.When used with Disconnect, these flags return the socket to a disconnected, reusable state after the file has been transmitted.

UseDefaultWorkerThread UseDefaultWorkerThread UseDefaultWorkerThread UseDefaultWorkerThread 0

Utilizzare il thread predefinito per elaborare richieste di trasferimento di file di lunga durata.Use the default thread to process long file transfer requests.

UseKernelApc UseKernelApc UseKernelApc UseKernelApc 32

Utilizzare chiamate asincrone di procedura del kernel anziché thread di lavoro per elaborare richieste di trasferimento dei file di lunga durata.Use kernel asynchronous procedure calls (APCs) instead of worker threads to process long file transfer requests. Vengono definite richieste di lunga durata le richieste per le quali sono necessarie più letture del file o della cache. La richiesta dipende pertanto dalle dimensioni del file e dalla lunghezza del pacchetto di invio specificata.Long requests are defined as requests that require more than a single read from the file or a cache; the request therefore depends on the size of the file and the specified length of the send packet.

UseSystemThread UseSystemThread UseSystemThread UseSystemThread 16

Utilizzare thread di sistema per elaborare richieste di trasferimento dei file di lunga durata.Use system threads to process long file transfer requests.

WriteBehind WriteBehind WriteBehind WriteBehind 4

Completare immediatamente la richiesta di trasferimento dei file, senza sospensioni.Complete the file transfer request immediately, without pending. Se viene specificato questo flag e il trasferimento dei file viene completato correttamente, i dati sono stati accettati dal sistema ma potrebbero non essere stati riconosciuti dal punto finale remoto.If this flag is specified and the file transfer succeeds, the data has been accepted by the system but not necessarily acknowledged by the remote end. Non utilizzare questo flag con i flag Disconnect e ReuseSocket.Do not use this flag with the Disconnect and ReuseSocket flags.

Esempi

Nell'esempio seguente viene illustrato l'utilizzo di ReuseSocket in una chiamata a SendFile.The following example demonstrates the use of ReuseSocket in a call to SendFile. Il file "test. txt" si trova nella directory radice del computer locale.The file "test.txt" is located in the root directory of the local machine. In questo esempio, un prebuffer e postbuffer di dati creati e inviati all'host remoto con il file.In this example, a prebuffer and postbuffer of data are created and sent to the remote host with the file. Per usare thread predefinito del sistema, UseDefaultWorkerThread è specificato.To use the system's default thread, UseDefaultWorkerThread is specified.

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

Commenti

Nota i flag di disconnessione e ReuseSocket riportano il socket a un disconnesso, riutilizzabili di stato dopo che il file è stato trasmesso.Note The flags Disconnect and ReuseSocket return the socket to a disconnected, reusable state after the file has been transmitted. Questi flag non devono essere utilizzati su un socket in cui è stata richiesta la qualità del servizio (QOS), perché il provider di servizi potrebbe eliminare immediatamente la qualità del servizio associata al socket prima che il trasferimento di file è stata completata.These flags should not be used on a socket where quality of service (QOS) has been requested, because the service provider might immediately delete any quality of service associated with the socket before the file transfer has completed. L'approccio migliore per un socket compatibili con QOS consiste nel chiamare Close durante il trasferimento di file è stata completata, piuttosto che basarsi su questi flag.The best approach for a QOS-enabled socket is to call Close when the file transfer has completed, rather than relying on these flags.

Si applica a