Socket.SendFile メソッド

定義

接続された Socket に、ファイルおよびオプション データを同期的に送信します。

オーバーロード

SendFile(String)

UseDefaultWorkerThread 送信フラグを使用して、接続されている Socket オブジェクトにファイル fileName を送信します。

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

指定した TransmitFileOptions 値を使用して、接続された Socket オブジェクトにファイル fileName およびデータのバッファーを送信します。

SendFile(String, ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, TransmitFileOptions)

指定した TransmitFileOptions 値を使用して、接続された Socket オブジェクトにファイル fileName およびデータのバッファーを送信します。

SendFile(String)

ソース:
Socket.cs
ソース:
Socket.cs
ソース:
Socket.cs

UseDefaultWorkerThread 送信フラグを使用して、接続されている Socket オブジェクトにファイル fileName を送信します。

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

パラメーター

fileName
String

送信されるファイルのパスと名前を含む String。 このパラメーターは、null に設定できます。

例外

ソケットがリモート ホストに接続されていません。

Socket オブジェクトは閉じられています。

Socket オブジェクトはブロック モードではなく、この同期呼び出しを受け付けることができません。

ファイル fileName が見つかりませんでした。

ソケットへのアクセスを試行しているときにエラーが発生しました。

次のコード例では、ソケットを作成して接続し、リモート ホストにファイルを送信します。 ファイル "test.txt" は、ローカル コンピューターのルート ディレクトリにあります。

// 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 を送信します。 パラメーターの既定値は flags (0)、および postBuffer パラメーターのpreBuffer既定値は nullUseDefaultWorkerThread です。 がローカル ディレクトリにある場合 fileName は、ファイルの名前だけで識別できます。それ以外の場合は、ファイルの完全なパスと名前を指定する必要があります。 ワイルドカード ("..\\myfile.txt") と UNC 共有名 ("\\\\shared directory\\myfile.txt") がサポートされています。 ファイルが見つからない場合は、例外 FileNotFoundException がスローされます。

このメソッドでは、 TransmitFile Windows Sockets 2 API で見つかった関数を使用します。 関数とそのフラグの TransmitFile 詳細については、 Windows ソケット のドキュメントを参照してください。

SendFileは、 メソッドまたは Accept メソッドで指定されたリモート ホストにファイルを同期的にConnect送信します。 SendFile は、接続指向とコネクションレス プロトコルの両方に使用できます。

コネクションレス プロトコルを使用している場合は、このメソッドを呼び出す前に を呼び Connect 出す必要があります。それ以外の場合 SendFile は例外を SocketException スローします。 接続指向プロトコルを使用している場合は、 を使用 Connect してリモート ホスト接続を確立するか、 を使用 Accept して受信接続を受け入れる必要があります。

接続指向プロトコルを使用している場合は、 SendFile ファイルが送信されるまでブロックします。 非ブロッキング モードでは、 SendFile ファイル全体が送信される前に正常に完了する可能性があります。 送信したデータがネットワークにすぐに表示される保証はありません。 ネットワーク効率を高めるために、基になるシステムは、大量の送信データが収集されるまで送信を遅らせる場合があります。 メソッドが正常に SendFile 完了すると、基になるシステムにネットワーク送信用のデータをバッファーする領域があることを意味します。

注意

を受け取った場合は SocketException、 プロパティを SocketException.ErrorCode 使用して特定のエラー コードを取得します。 このコードを取得したら、エラーの詳細な説明については、 Windows ソケット バージョン 2 API エラー コード のドキュメントを参照してください。

Note

このメンバーは、アプリケーションでネットワーク トレースが有効にされている場合にトレース情報を出力します。 詳細については、「.NET Frameworkのネットワーク トレース」を参照してください。

適用対象

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

ソース:
Socket.cs
ソース:
Socket.cs
ソース:
Socket.cs

指定した TransmitFileOptions 値を使用して、接続された Socket オブジェクトにファイル fileName およびデータのバッファーを送信します。

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

送信するファイルのパスと名前。 このパラメーターは、null に設定できます。

preBuffer
Byte[]

ファイルが送信される前に送信されるデータ。 このパラメーターは、null に設定できます。

postBuffer
Byte[]

ファイルの送信後に送信されるデータ。 このパラメーターは、null に設定できます。

flags
TransmitFileOptions

ファイルの転送方法を指定する列挙値のビットごとの組み合わせ。

例外

オペレーティング システムは Windows NT 以降ではありません。

- または -

ソケットがリモート ホストに接続されていません。

Socket オブジェクトは閉じられています。

Socket オブジェクトはブロック モードではなく、この同期呼び出しを受け付けることができません。

ファイル fileName が見つかりませんでした。

ソケットへのアクセスを試行しているときにエラーが発生しました。

次のコード例では、ソケットを作成して接続します。 ファイル "test.txt" は、ローカル コンピューターのルート ディレクトリにあります。 この例では、データのプリバッファーとポストバッファーを作成し、ファイルを使用してリモート ホストに送信します。 既定値 TransmitFileOptions が使用されます。

// 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 必要です。 パラメーターには preBuffer 、ファイルの前に必要なデータが含まれています。 postBuffer には、ファイルに従うデータが含まれています。 が現在の作業ディレクトリにある場合 fileName は、ファイルの名前だけで識別できます。それ以外の場合は、ファイルの完全なパスと名前を指定する必要があります。 ワイルドカード ("..\\myfile.txt") と UNC 共有名 ("\\\\shared directory\\myfile.txt") がサポートされています。

パラメーターは flags 、ファイル転送に関する追加情報を Window Sockets サービス プロバイダーに提供します。 このパラメーターの使用方法の詳細については、「」を参照してください TransmitFileOptions

このメソッドでは、 TransmitFile Windows Sockets 2 API で見つかった関数を使用します。 関数とそのフラグの TransmitFile 詳細については、 Windows ソケット のドキュメントを参照してください。

SendFileは、 メソッドまたは Accept メソッドで指定されたリモート ホストにファイルを同期的にConnect送信します。 SendFile は、接続指向とコネクションレス プロトコルの両方に使用できます。

コネクションレス プロトコルを使用している場合は、このメソッドを呼び出す前に を呼び出す Connect 必要があります。それ以外の場合 SendFile は を SocketExceptionスローします。 接続指向プロトコルを使用している場合は、 を使用 Connect してリモート ホスト接続を確立するか、 を使用 Accept して受信接続を受け入れる必要があります。

接続指向プロトコルを使用している場合は、 SendFile ファイル全体が送信されるまでブロックします。 非ブロッキング モードでは、 SendFile ファイル全体が送信される前に正常に完了する可能性があります。 送信したデータがネットワークにすぐに表示される保証はありません。 ネットワーク効率を高めるために、基になるシステムは、大量の送信データが収集されるまで送信を遅らせる場合があります。 メソッドが正常に SendFile 完了すると、基になるシステムにネットワーク送信用のデータをバッファーする領域があることを意味します。

注意

を受け取った場合は SocketException、 プロパティを SocketException.ErrorCode 使用して特定のエラー コードを取得します。 このコードを取得したら、エラーの詳細な説明については、 Windows ソケット バージョン 2 API エラー コード のドキュメントを参照してください。

Note

このメンバーは、アプリケーションでネットワーク トレースが有効にされている場合にトレース情報を出力します。 詳細については、「.NET Frameworkのネットワーク トレース」を参照してください。

適用対象

SendFile(String, ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, TransmitFileOptions)

ソース:
Socket.cs
ソース:
Socket.cs
ソース:
Socket.cs

指定した TransmitFileOptions 値を使用して、接続された Socket オブジェクトにファイル fileName およびデータのバッファーを送信します。

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

パラメーター

fileName
String

送信されるファイルのパスと名前を含む String。 このパラメーターは、null に設定できます。

preBuffer
ReadOnlySpan<Byte>

ReadOnlySpan<T>ファイルが送信される前に送信されるデータを格納している 。 このバッファーは空にすることができます。

postBuffer
ReadOnlySpan<Byte>

ReadOnlySpan<T>ファイルの送信後に送信されるデータを格納している 。 このバッファーは空にすることができます。

flags
TransmitFileOptions

1 つ以上の TransmitFileOptions 値。

例外

Socket オブジェクトは閉じられています。

オブジェクトが Socket リモート ホストに接続されていません。

Socket オブジェクトはブロック モードではなく、この同期呼び出しを受け付けることができません。

ファイル fileName が見つかりませんでした。

ソケットへのアクセスを試行しているときにエラーが発生しました。

適用対象