Socket.BeginSendFile メソッド

定義

接続された Socket オブジェクトに、ファイルを非同期的に送信します。

オーバーロード

BeginSendFile(String, AsyncCallback, Object)

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

BeginSendFile(String, Byte[], Byte[], TransmitFileOptions, AsyncCallback, Object)

接続された Socket オブジェクトに、ファイルとデータのバッファーを非同期的に送信します。

BeginSendFile(String, AsyncCallback, Object)

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

public:
 IAsyncResult ^ BeginSendFile(System::String ^ fileName, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginSendFile (string fileName, AsyncCallback? callback, object? state);
public IAsyncResult BeginSendFile (string? fileName, AsyncCallback? callback, object? state);
public IAsyncResult BeginSendFile (string fileName, AsyncCallback callback, object state);
member this.BeginSendFile : string * AsyncCallback * obj -> IAsyncResult
Public Function BeginSendFile (fileName As String, callback As AsyncCallback, state As Object) As IAsyncResult

パラメーター

fileName
String

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

callback
AsyncCallback

AsyncCallback デリゲート。

state
Object

この要求の状態情報を格納するオブジェクト。

戻り値

非同期送信を表す IAsyncResult オブジェクト。

例外

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

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

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

.NET Framework および .NET 5 以前のみ: ソケットにアクセスしようとしたときにエラーが発生しました。 以下の解説を参照してください。

注釈

重要

これは互換性 API です。 新しい開発に APM (Begin* および End*) メソッドを使用することはお勧めしません。 代わりに、 ベースの Task同等のものを使用します。

このオーバーロードは、ソケット経由でファイル fileName を送信します。 がローカル ディレクトリ内にある場合 fileName は、ファイルの名前だけで識別できます。それ以外の場合は、ファイルの完全なパスと名前を指定する必要があります。 ワイルドカード ("..\\myfile.txt") と UNC 共有名 ("\\\\shared directory\\myfile.txt") がサポートされています。 ファイルが見つからない場合は、例外 FileNotFoundException がスローされます。

を実装AsyncCallbackBeginSendFileするコールバックを渡して、操作の完了に関する通知を受け取ることができます。 基になるネットワーク スタックが同期的に操作を完了すると、 への呼び出し BeginSendFile中にコールバックがインラインで実行されることに注意してください。 この場合、 CompletedSynchronously 返される IAsyncResult の プロパティは に true 設定され、メソッドが同期的に完了したことを示します。 メソッドに AsyncState 渡される状態オブジェクトを取得するには、 の プロパティ IAsyncResultBeginSendFile 使用します。

メソッドを BeginSendFile 呼び出して操作を完了する EndSendFile 必要があります。 通常、 メソッドはデリゲートによって AsyncCallback 呼び出されます。 EndSendFile は、操作が完了するまで呼び出し元のスレッドをブロックします。

接続指向プロトコルを対象としていますが、 BeginSendFile または メソッドを最初に呼び出してConnectBeginConnect既定のリモート ホストを確立する場合は、コネクションレス プロトコルでも機能します。 コネクションレス プロトコルでは、ファイルのサイズが基になるサービス プロバイダーの最大パケット サイズを超えていないことを確認する必要があります。 送信された場合、データグラムは送信されず、 BeginSendFile 例外が SocketException スローされます。

Note

例外が発生した場合は SocketException 、 プロパティを SocketException.ErrorCode 使用して特定のエラー コードを取得します。

Note

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

Note

実行コンテキスト (セキュリティ コンテキスト、偽装されたユーザー、および呼び出し元のコンテキスト) は、非同期 Socket メソッド用にキャッシュされます。 特定のコンテキスト (特定の非同期 Socket メソッド、特定 Socket のインスタンス、および特定のコールバック) を最初に使用した後、そのコンテキストを後続で使用すると、パフォーマンスが向上します。

適用対象

BeginSendFile(String, Byte[], Byte[], TransmitFileOptions, AsyncCallback, Object)

接続された Socket オブジェクトに、ファイルとデータのバッファーを非同期的に送信します。

public:
 IAsyncResult ^ BeginSendFile(System::String ^ fileName, cli::array <System::Byte> ^ preBuffer, cli::array <System::Byte> ^ postBuffer, System::Net::Sockets::TransmitFileOptions flags, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginSendFile (string? fileName, byte[]? preBuffer, byte[]? postBuffer, System.Net.Sockets.TransmitFileOptions flags, AsyncCallback? callback, object? state);
public IAsyncResult BeginSendFile (string fileName, byte[] preBuffer, byte[] postBuffer, System.Net.Sockets.TransmitFileOptions flags, AsyncCallback callback, object state);
member this.BeginSendFile : string * byte[] * byte[] * System.Net.Sockets.TransmitFileOptions * AsyncCallback * obj -> IAsyncResult
Public Function BeginSendFile (fileName As String, preBuffer As Byte(), postBuffer As Byte(), flags As TransmitFileOptions, callback As AsyncCallback, state As Object) As IAsyncResult

パラメーター

fileName
String

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

preBuffer
Byte[]

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

postBuffer
Byte[]

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

flags
TransmitFileOptions

列挙値のビットごとの組み合わせ。

callback
AsyncCallback

このオプションの完了時に呼び出される AsyncCallback デリゲート。 このパラメーターは、null に設定できます。

state
Object

この要求の状態情報を格納するユーザー定義のオブジェクト。 このパラメーターは、null に設定できます。

戻り値

非同期操作を表す IAsyncResult オブジェクト。

例外

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

.NET Framework および .NET 5 以前のみ: ソケットにアクセスしようとしたときにエラーが発生しました。 以下の解説を参照してください。

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

- または -

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

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

注釈

重要

これは互換性 API です。 新しい開発に APM (Begin* および End*) メソッドを使用することはお勧めしません。 代わりに、 ベースの Task同等のものを使用します。

このオーバーロードには、送信するファイルの名前と、値のビットごとの組み合わせが TransmitFileOptions 必要です。 パラメーターには preBuffer 、ファイルの前に必要なデータが含まれています。 postBuffer には、ファイルに従うデータが含まれています。 がローカル ディレクトリ内にある場合 fileName は、ファイルの名前だけで識別できます。それ以外の場合は、ファイルの完全なパスと名前を指定する必要があります。 ワイルドカード ("..\\myfile.txt") と UNC 共有名 ("\\\\shared directory\\myfile.txt") がサポートされています。 ファイルが見つからない場合は、例外 FileNotFoundException がスローされます。

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

を実装AsyncCallbackBeginSendFileするコールバックを渡して、操作の完了に関する通知を受け取ることができます。 基になるネットワーク スタックが同期的に操作を完了すると、 への呼び出し BeginSendFile中にコールバックがインラインで実行されることに注意してください。 この場合、 CompletedSynchronously 返される IAsyncResult の プロパティは に true 設定され、メソッドが同期的に完了したことを示します。 メソッドに AsyncState 渡される状態オブジェクトを取得するには、 の プロパティ IAsyncResultBeginSendFile 使用します。

メソッドを BeginSendFile 呼び出して操作を完了する EndSendFile 必要があります。 通常、 メソッドは、指定された AsyncCallback デリゲートによって呼び出されます。 EndSendFile は、操作が完了するまで呼び出し元のスレッドをブロックします。

接続指向プロトコルを対象としていますが、 BeginSendFile または メソッドを最初に呼び出してConnectBeginConnect既定のリモート ホストを確立する場合は、コネクションレス プロトコルでも機能します。 コネクションレス プロトコルでは、ファイルのサイズが基になるサービス プロバイダーの最大パケット サイズを超えていないことを確認する必要があります。 送信された場合、データグラムは送信されず、 BeginSendFile 例外が SocketException スローされます。

Note

例外が発生した場合は SocketException 、 プロパティを SocketException.ErrorCode 使用して特定のエラー コードを取得します。

Note

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

Note

実行コンテキスト (セキュリティ コンテキスト、偽装されたユーザー、および呼び出し元のコンテキスト) は、非同期 Socket メソッド用にキャッシュされます。 特定のコンテキスト (特定の非同期 Socket メソッド、特定 Socket のインスタンス、および特定のコールバック) を最初に使用した後、そのコンテキストを後続で使用すると、パフォーマンスが向上します。

適用対象