11

ZeroMQ (Java バインディング、jzmq) を使用してクライアントをサーバーに接続したいのですが、クライアント要求の TCP/IP アドレスなどの TCP 情報がどうしても必要です! 問題は、ネットワークでサービスをアナウンスできるようにするために、クライアントをそのサービスにリダイレクトできるようにするために、リクエストの TCP アドレスを取得する必要があることです。その場合、ブローカーは中央の「サービスレジストリ」です。ただし、両側に ZeroMQ サービスがあるため、その情報を取得するオプションが表示されません。

ここで行うことは、ブローカーへの標準ソケットを使用してダミー接続を確立することです。接続が確立されたら、この接続に使用される IP アドレスを取得し、接続を再度閉じます。取得された IP アドレスは、ランダムなポートで ZeroMQ ソケットを使用してバインドするために使用されています。

この解決策はこれまでで最も醜い解決策だと思うので、この問題のより良い解決策は何ですか?

ご挨拶。

4

4 に答える 4

7

0MQ は、いくつかの理由により、ピアのアドレスを提供しません。本当に必要なのは、接続が確立されたアドレスではなく、接続を受信するエンドポイントであるため、これもあまり役に立ちません。

私が通常行うことは、非常にエレガントですが、サービスをエフェメラル ポートにバインドし、完全な接続エンドポイント ("tcp://ipaddress:port") を取得し、その文字列をピアにブロードキャストするか、何らかの方法で送信します。私のサービス名とともに中央レジストリなど。次に、再接続したいピアは、サービス名を取得し、検索してエンドポイントを見つけ、私に再接続できます。

于 2013-01-30T11:11:30.963 に答える