0

私は、論理ノードのセットが相互に通信する分散アプリケーションに取り組んでいます。

最初の検出フェーズでは、各論理ノードが起動し、UDPブロードキャストパケットをネットワークに送信して、残りのノードにその存在を通知します。

物理ホストが異なる場合、これは、ポート番号について合意し、他のホストから受信したUDPブロードキャストを追跡することで簡単に処理できます。

私の問題は、同じマシン上の複数の論理ノードの場合も処理できる必要があるということです。

したがって、この場合、同じポートに2回バインドすることはできないようです。同じボックスに2つの論理ノードがある場合、ノード検出のケースをどのように処理しますか?よろしくお願いします!!

4

1 に答える 1

0

あなたの選択は次のとおりです。

  1. RAWソケットを作成し、特定のNIC上のすべてのパケットをリッスンします。このように、各パケットの内容を確認することにより、プロセスはパケットが自分宛てのものであるかどうかを識別します。これに伴う問題は、処理しなければならない大量のパケットです。これが、オペレーティングシステムのカーネルがソケットをプロセスにバインドし、トラフィックが最適に分散される理由です。

  2. 特殊なサービス、つまり、作業の実行に使用できる新しいプロセスのアナウンスを処理するデーモンを作成します。起動時に、プロセスはそのポート番号をサービスに通知する必要があります。これは通常、それが行われる方法です。

  3. 実行するプロセスごとに仮想IPアドレスを使用します。各プロセスは、異なるIPアドレスにバインドされます。ローカルネットワークで実行している場合、これが最も簡単な方法です。

  4. ポートの範囲を定義し、定義したすべてのIPアドレスでこの範囲をスキャンします。

于 2012-10-14T18:50:01.810 に答える