Windows ソケット : ソケット通知
この技術情報では、ソケットのクラスで通知関数について説明します。これらのメンバー関数は重要なイベントのソケット オブジェクトに通知するためにフレームワークがダイヤルするコールバック関数です。通知関数は次のとおりです:
OnReceive: Receiveを呼び出すことが検索するときのバッファーにデータがあります。このソケットを通知します。
OnConnect: この通知ら、ソケットを完了するその接続試行接続します: が正常にと、エラーになります。
OnClose: に接続されている場合、ソケットでこのソケット終了したことを通知します。
[!メモ]
追加通知関数は OnOutOfBandDataです。この通知が送信ソケットに送信する 「」アウトバンド データがあることを受信ソケットに指示します。帯域外データは、アタッチされたストリーム ソケットの各ペアとの論理的に依存しないチャネル連携です。アウトバンド チャネルが通常は 「緊急の」データを送信するために使用されます。MFC は帯域外データをサポートします。クラス CAsyncSocket を使用する上級ユーザーはアウトバンド チャネルを使用する必要があるかも知れませんが、クラス CSocket のユーザーは、からを使用しないでください。簡単な方法は、そのようなデータを渡すための 2 番目のソケットを作成します。帯域外データに関する詳細については、 Windows SDKで使用できる Windows ソケットの仕様を参照してください。
クラス CAsyncSocketから派生する場合は、アプリケーションにターゲットこれらのネットワーク イベントの通知関数をオーバーライドします。クラス CSocketからクラスを派生する場合、通知関数をオーバーライドするには、選択かです。通知関数が何もしないように設定すると、 CSocket 自体を使用できます。
これらの関数はオーバーライド可能なコールバック関数です。CAsyncSocket と CSocket では、通知のメッセージを変換しますが、これらを使用する場合は、通知関数がどのように応答するかを実行します。通知関数は、読み取られるデータの存在などのソケットから対象のイベントが通知されると呼び出されます。
MFC は、通知を受けるとソケットの動作をカスタマイズできるように通知関数をダイヤルします。たとえば、 OnReceive 通知関数からの Receive をダイヤルする場合があります。つまり、通知するように読み込むデータがあることを読み取るに Receive をダイヤルします。この方法は必要ではありませんが、有効なシナリオです。別の方法として、などの進行状況、印刷 トレース,trace のメッセージを追跡するために通知関数を使用する場合があります。
ソケットの派生クラスの通知関数をオーバーライドして、実装を提供することで、これらの通知を利用できます。
データを受け取るか、送信などの操作中に、 CSocket のオブジェクトは同期になります。同期状態のときに、現在のソケットする通知を待機している間、他のソケットにあるすべての通知がキューに置かれます。(たとえば、 Receive の呼び出しの間に、ソケットは通知を読み取る必要です)。ソケットで同期操作を完了し、もう一度非同期に応じて、他のソケットはキューに入れられた通知を受け取る開始できます。
[!メモ]
CSocketでは、 OnConnect 通知関数は決して呼び出されません。接続の場合、接続が完了したときに返す 接続をダイヤルします (正常に、エラー)。接続の通知を処理または MFC の実装の詳細です。
各通知関数に関する詳細については、 " MFC リファレンスのクラス CAsyncSocket によって関数を参照してください。MFC のサンプルについてのソース・コードとついては、 MFC のサンプルを参照してください。
詳細については、次のトピックを参照してください。