Socket.SendFile Socket.SendFile Socket.SendFile Socket.SendFile Method

定義

接続された Socket に、ファイルおよびオプション データを同期的に送信します。Sends a file and optional data synchronously to a connected Socket.

オーバーロード

SendFile(String) SendFile(String) SendFile(String) SendFile(String)

UseDefaultWorkerThread 送信フラグを使用して、接続されている Socket オブジェクトにファイル fileName を送信します。Sends the file fileName to a connected Socket object with the UseDefaultWorkerThread transmit flag.

SendFile(String, Byte[], Byte[], TransmitFileOptions) SendFile(String, Byte[], Byte[], TransmitFileOptions) SendFile(String, Byte[], Byte[], TransmitFileOptions) SendFile(String, Byte[], Byte[], TransmitFileOptions)

指定した TransmitFileOptions 値を使用して、接続された Socket オブジェクトにファイル fileName およびデータのバッファーを送信します。Sends the file fileName and buffers of data to a connected Socket object using the specified TransmitFileOptions value.

SendFile(String) SendFile(String) SendFile(String) SendFile(String)

UseDefaultWorkerThread 送信フラグを使用して、接続されている Socket オブジェクトにファイル fileName を送信します。Sends the file fileName to a connected Socket object with the UseDefaultWorkerThread transmit flag.

public:
 void SendFile(System::String ^ fileName);
public void SendFile (string fileName);
member this.SendFile : string -> unit
Public Sub SendFile (fileName As String)

パラメーター

fileName
String String String String

送信されるファイルのパスと名前を含む StringA String that contains the path and name of the file to be sent. このパラメーターは、null に設定できます。This parameter can be null.

例外

ソケットがリモート ホストに接続されていません。The socket is not connected to a remote host.

Socket オブジェクトは閉じられています。The Socket object has been closed.

Socket オブジェクトはブロック モードではなく、この同期呼び出しを受け付けることができません。The Socket object is not in blocking mode and cannot accept this synchronous call.

ファイル fileName が見つかりませんでした。The file fileName was not found.

ソケットへのアクセスを試行しているときにエラーが発生しました。An error occurred when attempting to access the socket.

次のコード例を作成し、ソケットを接続し、リモート ホストにファイルを送信します。The following code example creates and connects a socket and then sends a file to the remote host. ファイル"test.txt"は、ローカル コンピューターのルート ディレクトリにあります。The file "test.txt" is located in the root directory of the local machine.

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

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

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

注釈

このオーバー ロードは、ファイルを送信fileNameに接続されたソケットにします。This overload sends the file fileName to the connected socket. flagsパラメーターの既定値UseDefaultWorkerThread(0)、およびpreBufferpostBufferパラメーターに既定のnullします。The flags parameter defaults to UseDefaultWorkerThread (0), and the preBuffer and postBuffer parameters default to null. 場合fileNameですが、ローカルのディレクトリでファイルの名前だけで識別可能性があります。 それ以外の場合、完全なパスとファイルの名前を指定する必要があります。If fileName is in the local directory, it may be identified with just the name of the file; otherwise, the full path and name of the file must be specified. ワイルドカード ("..\\myfile.txt") と UNC 共有名 ("\\\\shared ディレクトリ\\myfile.txt") はサポートされています。Wildcards ("..\\myfile.txt") and UNC share names ("\\\\shared directory\\myfile.txt") are supported. ファイルが見つからない場合、例外FileNotFoundExceptionがスローされます。If the file is not found, the exception FileNotFoundException is thrown.

このメソッドを使用して、 TransmitFile Windows Sockets 2 API の関数が見つかりました。This method uses the TransmitFile function found in the Windows Sockets 2 API. 詳細については、TransmitFile関数とそのフラグを参照してください、 Windows Socketsドキュメント。For more information about the TransmitFile function and its flags, see the Windows Sockets documentation.

SendFile 指定されたリモート ホストにファイルを同期的に送信、ConnectまたはAcceptメソッド。SendFile synchronously sends a file to the remote host specified in the Connect or Accept method. SendFile コネクションレスのプロトコル、接続指向の両方に使用できます。SendFile can be used for both connection-oriented and for connectionless protocols.

呼び出す必要がある場合はコネクションレスのプロトコルを使用しているConnectそれ以外の場合、このメソッドを呼び出す前にSendFileスロー、SocketException例外。If you are using a connectionless protocol, you must call Connect before calling this method, otherwise SendFile throws a SocketException exception. 接続指向プロトコルを使用している場合を使用する必要があります。Connectをリモート ホスト接続を確立またはを使用して、Accept着信接続を受け入れるようにします。If you are using a connection-oriented protocol, you must either use Connect to establish a remote host connection or use Accept to accept an incoming connection.

接続指向のプロトコルを使用している場合SendFileファイルを送信するまでブロックします。If you are using a connection-oriented protocol, SendFile blocks until the file is sent. 非ブロッキング モードでSendFileファイル全体が送信される前に正常に完了場合があります。In nonblocking mode, SendFile may complete successfully before the entire file has been sent. 送信するデータがすぐに、ネットワーク上に表示される保証はありません。There is no guarantee that the data you send will appear on the network immediately. ネットワークの効率を向上させるのに大量の送信データが収集されるまで、基になるシステムが送信を遅延する可能性があります。To increase network efficiency, the underlying system may delay transmission until a significant amount of outgoing data is collected. 正常に完了、SendFileメソッドは、基になるシステムがネットワークのデータの送信バッファーする領域を持っていることを意味します。A successful completion of the SendFile method means that the underlying system has had room to buffer your data for a network send.

注意

表示された場合、SocketExceptionを使用して、SocketException.ErrorCode特定のエラー コードを取得するプロパティ。If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. このコードを取得した後を参照してください、 Windows Sockets version 2 API エラー コードエラーの詳細な説明のドキュメント。After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

注意

このメンバーは、アプリケーションでネットワーク トレースが有効にされている場合にトレース情報を出力します。This member outputs trace information when you enable network tracing in your application. 詳細については、次を参照してください。ネットワークのトレースを .NET Framework でします。For more information, see Network Tracing in the .NET Framework.

SendFile(String, Byte[], Byte[], TransmitFileOptions) SendFile(String, Byte[], Byte[], TransmitFileOptions) SendFile(String, Byte[], Byte[], TransmitFileOptions) SendFile(String, Byte[], Byte[], TransmitFileOptions)

指定した TransmitFileOptions 値を使用して、接続された Socket オブジェクトにファイル fileName およびデータのバッファーを送信します。Sends the file fileName and buffers of data to a connected Socket object using the specified TransmitFileOptions value.

public:
 void SendFile(System::String ^ fileName, cli::array <System::Byte> ^ preBuffer, cli::array <System::Byte> ^ postBuffer, System::Net::Sockets::TransmitFileOptions flags);
public void SendFile (string fileName, byte[] preBuffer, byte[] postBuffer, System.Net.Sockets.TransmitFileOptions flags);
member this.SendFile : string * byte[] * byte[] * System.Net.Sockets.TransmitFileOptions -> unit
Public Sub SendFile (fileName As String, preBuffer As Byte(), postBuffer As Byte(), flags As TransmitFileOptions)

パラメーター

fileName
String String String String

送信されるファイルのパスと名前を含む StringA String that contains the path and name of the file to be sent. このパラメーターは、null に設定できます。This parameter can be null.

preBuffer
Byte[]

ファイルが送信される前に送信されるデータを格納する Byte 配列。A Byte array that contains data to be sent before the file is sent. このパラメーターは、null に設定できます。This parameter can be null.

postBuffer
Byte[]

ファイルが送信された後で送信されるデータを格納する Byte 配列。A Byte array that contains data to be sent after the file is sent. このパラメーターは、null に設定できます。This parameter can be null.

例外

オペレーティング システムは Windows NT 以降ではありません。The operating system is not Windows NT or later.

または-or- ソケットがリモート ホストに接続されていません。The socket is not connected to a remote host.

Socket オブジェクトは閉じられています。The Socket object has been closed.

Socket オブジェクトはブロック モードではなく、この同期呼び出しを受け付けることができません。The Socket object is not in blocking mode and cannot accept this synchronous call.

ファイル fileName が見つかりませんでした。The file fileName was not found.

ソケットへのアクセスを試行しているときにエラーが発生しました。An error occurred when attempting to access the socket.

次のコード例では、作成し、ソケットを接続します。The following code example creates and connects a socket. ファイル"test.txt"は、ローカル コンピューターのルート ディレクトリにあります。The file "test.txt" is located in the root directory of the local machine. この例で事前バッファリングと事後バッファリングのデータを作成し、ファイルを使用して、リモート ホストに送信します。In this example, we create a prebuffer and postbuffer of data and send them to the remote host with the file. 既定のTransmitFileOptions使用されます。The default TransmitFileOptions are used.

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

注釈

このオーバー ロードには、送信するファイルとビットごとの組み合わせの名が必要です。TransmitFileOptions値。This overload requires the name of the file you want to send and a bitwise combination of TransmitFileOptions values. preBufferパラメーターには、ファイルの前にすべてのデータが含まれています。The preBuffer parameter contains any data you want to precede the file. postBuffer ファイルを実行するデータが含まれています。postBuffer contains data you want to follow the file. 場合fileNameですが、現在の作業ディレクトリでファイルの名前だけで識別可能性があります。 それ以外の場合、完全なパスとファイルの名前を指定する必要があります。If fileName is in the current working directory, it may be identified with just the name of the file; otherwise, the full path and name of the file must be specified. ワイルドカード ("..\\myfile.txt") と UNC 共有名 ("\\\\shared ディレクトリ\\myfile.txt") はサポートされています。Wildcards ("..\\myfile.txt") and UNC share names ("\\\\shared directory\\myfile.txt") are supported.

flagsパラメーターには、ファイルの転送に関する追加情報をウィンドウのソケット サービス プロバイダーが提供します。The flags parameter provides the Window Sockets service provider with additional information about the file transfer. このパラメーターを使用する方法の詳細については、次を参照してください。TransmitFileOptionsします。For more information about how to use this parameter, see TransmitFileOptions.

このメソッドを使用して、 TransmitFile Windows Sockets 2 API の関数が見つかりました。This method uses the TransmitFile function found in the Windows Sockets 2 API. 詳細については、TransmitFile関数とそのフラグを参照してください、 Windows Socketsドキュメント。For more information about the TransmitFile function and its flags, see the Windows Sockets documentation.

SendFile 指定されたリモート ホストにファイルを同期的に送信、ConnectまたはAcceptメソッド。SendFile synchronously sends a file to the remote host specified in the Connect or Accept method. SendFile コネクションレスのプロトコル、接続指向の両方に使用できます。SendFile can be used for both connection-oriented and for connectionless protocols.

呼び出す必要がある場合はコネクションレスのプロトコルを使用しているConnect; このメソッドを呼び出す前にそれ以外の場合SendFileスロー、 SocketExceptionIf you are using a connectionless protocol, you must call Connect before calling this method; otherwise SendFile throws a SocketException. 接続指向プロトコルを使用している場合を使用する必要があります。Connectをリモート ホスト接続を確立または使用Accept着信接続を受け入れるようにします。If you are using a connection-oriented protocol, you must either use Connect to establish a remote host connection, or use Accept to accept an incoming connection.

接続指向のプロトコルを使用している場合SendFileファイル全体が送信されるまでブロックします。If you are using a connection-oriented protocol, SendFile blocks until the entire file is sent. 非ブロッキング モードでSendFileファイル全体が送信される前に正常に完了場合があります。In nonblocking mode, SendFile may complete successfully before the entire file has been sent. 送信するデータがすぐに、ネットワーク上に表示される保証はありません。There is no guarantee that the data you send will appear on the network immediately. ネットワークの効率を向上させるのに大量の送信データが収集されるまで、基になるシステムが送信を遅延する可能性があります。To increase network efficiency, the underlying system may delay transmission until a significant amount of outgoing data is collected. 正常に完了、SendFileメソッドは、基になるシステムがネットワークのデータの送信バッファーする領域を持っていることを意味します。A successful completion of the SendFile method means that the underlying system has had room to buffer your data for a network send.

注意

表示された場合、SocketExceptionを使用して、SocketException.ErrorCode特定のエラー コードを取得するプロパティ。If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. このコードを取得した後を参照してください、 Windows Sockets version 2 API エラー コードエラーの詳細な説明のドキュメント。After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

注意

このメンバーは、アプリケーションでネットワーク トレースが有効にされている場合にトレース情報を出力します。This member outputs trace information when you enable network tracing in your application. 詳細については、次を参照してください。ネットワークのトレースを .NET Framework でします。For more information, see Network Tracing in the .NET Framework.

適用対象