Socket.SendFile メソッド (String, Byte[], Byte[], TransmitFileOptions)
メモ : このメソッドは、.NET Framework version 2.0 で新しく追加されたものです。
TransmitFileOptions 値を指定して、接続されている Socket オブジェクトにファイル fileName およびデータのバッファを送信します。
名前空間: System.Net.Sockets
アセンブリ: System (system.dll 内)
構文
Public Sub SendFile ( _ fileName As String, _ preBuffer As Byte(), _ postBuffer As Byte(), _ flags As TransmitFileOptions _ )
Dim instance As Socket Dim fileName As String Dim preBuffer As Byte() Dim postBuffer As Byte() Dim flags As TransmitFileOptions instance.SendFile(fileName, preBuffer, postBuffer, flags)
public void SendFile ( string fileName, byte[] preBuffer, byte[] postBuffer, TransmitFileOptions flags )
public: void SendFile ( String^ fileName, array<unsigned char>^ preBuffer, array<unsigned char>^ postBuffer, TransmitFileOptions flags )
public void SendFile ( String fileName, byte[] preBuffer, byte[] postBuffer, TransmitFileOptions flags )


このオーバーロードには、送信するファイルの名前と TransmitFileOptions の値のビットごとの組み合わせが必要です。preBuffer パラメータには、ファイルの前に送信するデータを格納します。postBuffer には、ファイルの後に送信するデータを格納します。fileName が現在の作業ディレクトリに格納されている場合は、ファイルの名前だけで識別できます。それ以外の場合は、完全パスとファイルの名前を指定する必要があります。ワイルドカード ("..\\myfile.txt") および UNC 共有名 ("\\\\shared directory\\myfile.txt") がサポートされます。
flags パラメータによって、ファイル転送に関する追加情報と共に Windows Sockets サービス プロバイダが提供されます。このパラメータの使用方法の詳細については、TransmitFileOptions のトピックを参照してください。
このメソッドは、Windows Sockets 2 API にある TransmitFile 関数を使用します。TransmitFile 関数とフラグの詳細については、MSDN ライブラリで Windows Sockets のドキュメントを参照してください。
SendFile は、Connect メソッドまたは Accept メソッドで指定されたリモート ホストに同期的にファイルを送信します。SendFile は、コネクション指向のプロトコルとコネクションレスのプロトコルの両方で使用できます。
コネクションレスのプロトコルを使用している場合は、このメソッドを呼び出す前に Connect を呼び出す必要があります。これをしないと、SendFile が SocketException をスローします。コネクション指向のプロトコルを使用する場合は、Connect を使用してリモート ホストとの接続を確立するか、Accept を使用して受信接続を受け入れる必要があります。
コネクション指向のプロトコルを使用している場合、SendFile は、ファイル全体が送信されるまでブロックします。非ブロッキング モードでは、ファイル全体が送信される前に、SendFile が正常に完了することもあります。送信したデータがすぐにネットワーク上に現れることは保証されません。ネットワークの効率を高めるため、基になっているシステムは、十分な量の送信データが収集されるまで送信を遅延することがあります。SendFile メソッドが正常に完了した場合は、基になるシステムにネットワーク送信のためにデータをバッファする余地があったことを示します。
![]() |
---|
SocketException が発生した場合は、SocketException.ErrorCode プロパティを使用して具体的なエラー コードを取得してください。このコードを取得したら、Windows Socket Version 2 API エラー コードのドキュメントでエラーの詳細情報を確認してください。これは MSDN ライブラリから入手できます。 |

ソケットを作成して接続するコード例を次に示します。ファイル "test.txt" は、ローカル コンピュータのルート ディレクトリにあります。この例では、事前バッファリングと事後バッファリングのデータを作成し、それらをファイルと共にリモート ホストに送信します。既定の TransmitFileOptions が使用されます。
// Establish the local endpoint for the socket. IPHostEntry ipHost = Dns.Resolve(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();

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


Socket.SendFile メソッド (String)
メモ : このメソッドは、.NET Framework version 2.0 で新しく追加されたものです。
UseDefaultWorkerThread 送信フラグを使用して、接続されている Socket オブジェクトにファイル fileName を送信します。
名前空間: System.Net.Sockets
アセンブリ: System (system.dll 内)
構文


このオーバーロードは、接続されているソケットにファイル fileName を送信します。flags パラメータの既定値は UseDefaultWorkerThread (0) で、preBuffer パラメータと postBuffer パラメータの既定値は null 参照 (Visual Basic では Nothing) です。fileName がローカル ディレクトリに格納されている場合は、ファイルの名前だけで識別できます。それ以外の場合は、完全パスとファイルの名前を指定する必要があります。ワイルドカード ("..\\myfile.txt") および UNC 共有名 ("\\\\shared directory\\myfile.txt") がサポートされます。ファイルが見つからない場合は、例外 FileNotFoundException がスローされます。
このメソッドは、Windows Sockets 2 API にある TransmitFile 関数を使用します。TransmitFile 関数とフラグの詳細については、MSDN ライブラリで Windows Sockets のドキュメントを参照してください。
SendFile は、Connect メソッドまたは Accept メソッドで指定されたリモート ホストに同期的にファイルを送信します。SendFile は、コネクション指向のプロトコルとコネクションレスのプロトコルの両方で使用できます。
コネクションレスのプロトコルを使用している場合は、このメソッドを呼び出す前に Connect を呼び出す必要があります。これをしないと、SendFile が SocketException 例外をスローします。コネクション指向のプロトコルを使用している場合は、Connect を使用してリモート ホストとの接続を確立するか、Accept を使用して受信接続を受け入れる必要があります。
コネクション指向のプロトコルを使用している場合、SendFile は、ファイルが送信されるまでブロックします。非ブロッキング モードでは、ファイル全体が送信される前に、SendFile が正常に完了することもあります。送信したデータがすぐにネットワーク上に現れることは保証されません。ネットワークの効率を高めるため、基になっているシステムは、十分な量の送信データが収集されるまで送信を遅延することがあります。SendFile メソッドが正常に完了した場合は、基になるシステムにネットワーク送信のためにデータをバッファする余地があったことを示します。
![]() |
---|
SocketException が発生した場合は、SocketException.ErrorCode プロパティを使用して具体的なエラー コードを取得してください。このコードを取得したら、Windows Socket Version 2 API エラー コードのドキュメントでエラーの詳細情報を確認してください。これは MSDN ライブラリから入手できます。 |

ソケットを作成して接続し、リモート ホストにファイルを送信するコード例を次に示します。ファイル "test.txt" は、ローカル コンピュータのルート ディレクトリにあります。
// Establish the local endpoint for the socket. IPHostEntry ipHost = Dns.Resolve(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); // There is a text file test.txt located in the root directory. string fileName = "C:\\test.txt"; // Send file fileName to remote device Console.WriteLine("Sending {0} to the host.", fileName); client.SendFile(fileName); // Release the socket. client.Shutdown(SocketShutdown.Both); client.Close();

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


Socket.SendFile メソッド
接続された Socket に、ファイルおよびオプション データを同期的に送信します。
オーバーロードの一覧
名前 | 説明 |
---|---|
Socket.SendFile (String) | UseDefaultWorkerThread 送信フラグを使用して、接続されている Socket オブジェクトにファイル fileName を送信します。 |
Socket.SendFile (String, Byte[], Byte[], TransmitFileOptions) | TransmitFileOptions 値を指定して、接続されている Socket オブジェクトにファイル fileName およびデータのバッファを送信します。 |

Weblioに収録されているすべての辞書からSocket.SendFileを検索する場合は、下記のリンクをクリックしてください。

- Socket.SendFileのページへのリンク