CSocket::CancelBlockingCall
更新 : 2007 年 11 月
現在実行中のブロッキング呼び出しをキャンセルします。
void CancelBlockingCall( );
解説
この関数は、このソケットで完了していないすべてのブロッキング操作をキャンセルします。元のブロッキング呼び出しは、すぐに WSAEINTR エラーで終了します。
ブロッキング Connect 操作の場合は、Windows ソケットの実装はすぐにブロッキング呼び出しを終了しますが、接続が完了する (その後リセットされる) かタイムアウトになるまで、ソケット リソースは解放されないこともあります。これは、アプリケーションがすぐに新しいソケットを開くか (利用できるソケットがない場合)、同じピアに接続しようとしたときに起こります。
Accept 以外のどの操作のキャンセルも、ソケットを中間状態にします。アプリケーションがソケット上でブロッキング操作をキャンセルすると、アプリケーションがそのソケットに対して確実に実行できる操作は Close 呼び出しだけになります。ただし、Windows のソケットの実装ではほかにもいくつか動作する操作があります。アプリケーションに最大限の移植性を求めるときは、キャンセル後に実行する操作に依存しないような注意が必要です。
詳細については、「Windows ソケット : アーカイブ付きソケットの使用」を参照してください。
必要条件
ヘッダー : afxsock.h