Socket.SendPacketsAsync(SocketAsyncEventArgs) メソッド

定義

接続されている Socket オブジェクトに、ファイルのコレクションまたはメモリ内のデータ バッファーを非同期に送信します。

public:
 bool SendPacketsAsync(System::Net::Sockets::SocketAsyncEventArgs ^ e);
public bool SendPacketsAsync (System.Net.Sockets.SocketAsyncEventArgs e);
member this.SendPacketsAsync : System.Net.Sockets.SocketAsyncEventArgs -> bool
Public Function SendPacketsAsync (e As SocketAsyncEventArgs) As Boolean

パラメーター

e
SocketAsyncEventArgs

この非同期ソケット操作に使用する SocketAsyncEventArgs オブジェクト。

戻り値

I/O 操作が保留中の場合は true。 操作の完了時に、e パラメーターの Completed イベントが発生します。

I/O 操作が同期的に完了した場合は false。 この場合、e パラメーターの Completed イベントは発生しません。メソッド呼び出しから制御が戻った直後に、パラメーターとして渡された e オブジェクトを調べて操作の結果を取得できます。

例外

FilePath プロパティで指定されたファイルが見つかりませんでした。

e パラメーターに指定された SocketAsyncEventArgs オブジェクトを使用してソケット操作が既に進行していました。

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

Socket が閉じられました。

コネクションレスの Socket が使用されており、送信するファイルが基になるトランスポートの最大パケット サイズを超えています。

注釈

メソッドは SendPacketsAsync 、ファイルのコレクションまたはメモリ 内のデータ バッファーをリモート ホストに送信するために使用されます。 は Socket 既にリモート ホストに接続されている必要があります。

System.Net.Sockets.SendPacketsElementが作業ディレクトリ内のファイルを参照している場合は、ファイルの名前だけで識別できます。それ以外の場合は、ファイルの完全なパスと名前を指定する必要があります。 ワイルドカードと UNC 共有名がサポートされています。 ファイルが見つからない場合は、 FileNotFoundException がスローされます。

完了を通知するには、EventHandler<SocketAsyncEventArgs> デリゲートを実装するコールバック メソッドを作成し、コールバックをイベントにアタッチする SocketAsyncEventArgs.Completed 必要があります。

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

このメソッドを正常に呼び出すには、オブジェクトの System.Net.Sockets.SocketAsyncEventArgs 次のプロパティとイベントが必要です。

呼び出し元は、コールバック メソッドで情報を取得できるように、メソッドをSendPacketsAsync呼び出す前に必要な任意のユーザー状態オブジェクトに プロパティを設定SocketAsyncEventArgs.UserTokenできます。 コールバックに 1 つのオブジェクトよりも多くの情報が必要な場合は、他の必要な状態情報をメンバーとして保持する小さなクラスを作成できます。

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

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

メソッドは SendPacketsAsync 、使用されているオペレーティング システムに応じて最適化されます。 Windows Server エディションでは、 SendPacketsAsync メソッドは高パフォーマンス用に最適化されています。

Windows クライアント エディションでは、 SendPacketsAsync メソッドはメモリとリソースの最小使用率に最適化されています。

パラメーターの TransmitFileOptions.UseKernelApc プロパティで フラグを SocketAsyncEventArgs.SendPacketsFlags 使用すると、パフォーマンス上 e の大きな利点が得られます。 メソッド呼び出しを開始する SendPacketsAsync スレッドが大量の計算に使用されている場合、その APC の起動を妨げられる可能性は低くなります。 カーネルとユーザー モードの APC には違いがあることに注意してください。 カーネル APCs は、スレッドが待機状態のときに起動します。 ユーザー モードの APC は、スレッドが警告可能な待機状態のときに起動します

適用対象

こちらもご覧ください