SAN での接続のリッスン
次の図は、リモート ピアからの受信接続要求を認識してキューに入れる (リッスンする) よう、Windows ソケット スイッチが SAN ソケットを設定する方法の概要を示しています。 次のトピックでは、リスニング プロセスについて詳しく説明します。
アプリケーションによって開始された WSPListen 呼び出しを Windows ソケット スイッチが受信すると、スイッチは常に TCP/IP プロバイダーの WSPListen 関数を最初に呼び出し、TCP/IP プロバイダーのソケットを設定して受信接続要求を認識し、キューに入れます。 アプリケーションのソケットが SAN NIC の IP アドレスまたはワイルドカード IP アドレスにバインドされている場合、スイッチは、適切な SAN サービス プロバイダーを使用し、追加のソケットを作成してバインドします。 詳細については、「SAN ソケットの作成とバインド」を参照してください。
受信接続要求のリスニング
SAN サービス プロバイダーに SAN ソケットの作成とバインドを要求した後、スイッチは SAN サービス プロバイダーの WSPListen 関数を呼び出し、SAN ソケットが、受信接続のリスニングと、SAN サービス プロバイダーがキュー入りできる受信接続要求の数制限指定を行うようにします。
受信接続受け入れのためのセットアップ
スイッチは、非ブロッキング モードでのみ受信接続を受け入れます。 スイッチは、SAN サービス プロバイダーの WSPEventSelect 関数を呼び出して、ソケットを非ブロッキング モードにし、受信接続イベントの通知を要求します。 この呼び出しで、スイッチは FD_ACCEPT コードと、そのコードに関連付けるイベント オブジェクトを渡します。 SAN サービス プロバイダーは、以前にリスニング用に確立されたソケットで接続要求を受信すると、関連するイベント オブジェクトを合図するために Win32 SetEvent 関数を呼び出します。 スイッチは、専用スレッドで受信接続イベントをリスニングし、イベント オブジェクトが合図された後に接続を受け入れるか拒否します。 詳細については、「接続要求の受け入れ」を参照してください。
リモート ピアへの接続要求の拒否の表示
接続要求が到着し、SAN サービス プロバイダーの接続要求のバックログがいっぱいになった場合、SAN サービス プロバイダーは、接続要求を拒否することをリモート ピアに直ちに示すことになります。 この場合、SAN サービス プロバイダーは、接続要求の受け入れまたは拒否をスイッチに伝えるようにイベント オブジェクトに合図することはありません。 その後、リモート ピアの SAN サービス プロバイダーは、WSAECONNREFU エラー コードを使用して WSPConnect 呼び出しによって開始された接続オペレーションを失敗させる必要があります。