マルチホームと PGM
マルチホーム PGM 送信側または受信側には、特別な考慮が必要です。 このページでは、考慮事項について説明し、ベスト プログラミング プラクティスのガイドラインを示します。
マルチホーム PGM 送信側
アプリケーションが connect 関数の呼び出し時にインターフェイスを指定できない場合は、使用可能な最初のインターフェイスが使用されます。 使用可能なインターフェイスがない場合、 接続 は失敗します。
アプリケーションで RM_SET_SEND_IF ソケット オプションを使用してインターフェイスを指定すると、TCP/IP を使用してそのインターフェイスに対して バインド試行が 暗黙的に行われ、TCP/IP がバインド要求に失敗すると失敗します。 インターフェイスが RM_SET_SEND_IF を複数回使用して設定されている場合は、最後のインターフェイス セットのみが正常に適用されます。
Windows ソケットでは、設定されているインターフェイスが保持され、そのインターフェイスが消えると、セッションは切断されます。
マルチホーム PGM レシーバー
listen 関数の呼び出し時にアプリケーションがインターフェイスを指定できない場合は、既定のインターフェイスが使用されます。 使用可能なインターフェイスがない場合、 バインド は失敗します。
アプリケーションで、 RM_ADD_RECEIVE_IFを使用してリッスンする 1 つ以上のインターフェイスを指定すると、Windows ソケットは TCP/IP を使用して要求されたインターフェイスまたはインターフェイスにバインドしようとします。 TCP/IP からのエラーが発生すると、この要求は失敗します。 PGM 送信側のケースとは異なり、受信インターフェースを複数回追加すると、正常に追加されたすべてのインターフェースでリッスンがポストされます。 インターフェイスでのリッスンを停止するには、RM_DEL_RECEIVE_IF ソケット オプションを使用します。
Windows ソケットは、指定された複数のリッスン インターフェイスに関する状態を維持せず、代わりに TCP/IP に依存します。 ただし、セッションが進行中になると、Windows ソケットはそのセッションの受信インターフェイスを追跡し、そのインターフェイスが消えると、Windows ソケットはセッションを切断します。