TransmitFileOptions 列挙型

定義

TransmitFileOptions 列挙体は、ファイル転送要求で使用する値を定義します。The TransmitFileOptions enumeration defines values used in file transfer requests.

この列挙型には FlagsAttribute 属性があり、メンバー値ではビットごとの組み合わせを使用できます。

public enum class TransmitFileOptions
[System.Flags]
public enum TransmitFileOptions
type TransmitFileOptions = 
Public Enum TransmitFileOptions
継承
TransmitFileOptions
属性

フィールド

Disconnect 1

すべてのファイル データが伝送キューに置かれた後で、トランスポート レベルの接続解除を開始します。Start a transport-level disconnect after all the file data has been queued for transmission. ReuseSocket で使用する場合、これらのフラグは、ファイルの送信後に、ソケットを接続解除された再利用可能な状態に戻します。When used with ReuseSocket, these flags return the socket to a disconnected, reusable state after the file has been transmitted.

ReuseSocket 2

要求が完了すると、ソケット ハンドルは再利用できます。The socket handle may be reused when the request completes. このフラグは、同時に Disconnect も指定されている場合にだけ有効です。This flag is valid only if Disconnect is also specified. Disconnect で使用する場合、これらのフラグは、ファイルの送信後に、ソケットを接続解除された再利用可能な状態に戻します。When used with Disconnect, these flags return the socket to a disconnected, reusable state after the file has been transmitted.

UseDefaultWorkerThread 0

既定スレッドを使用して長いファイルの転送要求を処理します。Use the default thread to process long file transfer requests.

UseKernelApc 32

長いファイルの転送要求を処理するには、ワーカー スレッドの代わりに、カーネルの非同期プロシージャ呼び出し (APC: asynchronous procedure call) を使用します。Use kernel asynchronous procedure calls (APCs) instead of worker threads to process long file transfer requests. 長い要求は、ファイルやキャッシュから複数回読み取りを行う必要がある要求として定義されます。したがって、この要求はファイルのサイズや送信パケットに指定した長さに依存します。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 16

システム スレッドを使用して長いファイルの転送要求を処理します。Use system threads to process long file transfer requests.

WriteBehind 4

ファイル転送要求を、保留せず、すぐに完了させます。Complete the file transfer request immediately, without pending. このフラグが指定されていてファイル転送も成功した場合、データはシステムによって受け入れられますが、リモート エンドによって応答されるとは限りません。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. このフラグを、Disconnect フラグおよび ReuseSocket フラグと共に使用しないでください。Do not use this flag with the Disconnect and ReuseSocket flags.

TransmitFileOptionsSocket.SendFile呼び出しでを使用する例を次に示します。The following example demonstrates the use of TransmitFileOptions in a call to Socket.SendFile. ファイル "test.txt" は、ローカルコンピューターのルートディレクトリにあります。The file "test.txt" is located in the root directory of the local machine. この例では、データの prebuffer と postbuffer が作成され、ファイルを使用してリモートホストに送信されます。In this example, a prebuffer and postbuffer of data are created and sent to the remote host with the file. システムの既定のスレッドを使用するUseDefaultWorkerThreadには、を指定します。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();

注釈

注意

Disconnect フラグReuseSocketは、ファイルが転送された後、切断された再利用可能な状態にソケットを返します。The flags Disconnect and ReuseSocket return the socket to a disconnected, reusable state after the file has been transmitted. サービスの品質 (QOS) が要求されているソケットでは、これらのフラグを使用しないでください。サービスプロバイダーは、ファイル転送が完了する前に、ソケットに関連付けられているサービスの品質を直ちに削除する可能性があります。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. QOS が有効なソケットに最適な方法は、これらSocket.Closeのフラグに依存するのではなく、ファイル転送が完了したときにを呼び出すことです。The best approach for a QOS-enabled socket is to call Socket.Close when the file transfer has completed, rather than relying on these flags.

適用対象