Windows で C# を使用して ZeroMQ を使用していますが、非常に基本的なネットワークに関する質問に混乱しています。単純なサンプル プログラムをセットアップしました。1 つはメッセージを PUBlish するためのもので、もう 1 つは SUB ソケットを使用してメッセージを受信するものです (SUBscriber プログラム)。両方が同じボックスにある場合は正常に動作します。エンドポイント tcp://127.0.0.1:5000 を使用しました。次のステップとして、SUBscriber プログラムを別の仮想マシン (VM) に配置して、別のコンピューターを使用してシミュレートしました。ipconfig を実行して、その IP アドレス (ゲスト OS 上) 192.168.92.136 を取得しました。ホスト OS には複数のネットワーク インターフェイスがあり、そのうちの 1 つは IP 192.168.92.1 を持つ VMware ネットワーク アダプター VMnet1 です。ホスト OS では、PUB を実行しました。プログラムし、ゲストOSのIPアドレスである192.168.92.136にソケットを接続しました。ゲスト OS で SUB プログラムを実行し、ソケットをホスト OS の IP に接続しました。動作しませんでした。次に、ゲスト OS の SUB プログラムを変更して、独自の IP アドレス、つまりゲスト OS の IP アドレス - 192.168.92.136 に接続するようにしました。今それは動作します!
質問: なぜですか? よくわかりません。しかし、ある意味では理にかなっています。そのソケットが、動的に出入りするさまざまなクライアントに対応するサービス用である場合、各クライアントの IP アドレスはわかりません。では、SUB ソケットの IP アドレスとして一体何を指定するのでしょうか?! そのため、それを独自のホスト IP アドレスに接続すると、その懸念は解決されます。しかし、ZeroMQ ガイドには、このことはどこにも書かれていません。関連する質問: ホストに複数のネットワーク インターフェイスがあり、それぞれに独自の IP アドレスがある場合、他のホストの IP アドレスを使用してソケットを他のホストに接続する場合、それらのネットワークのどれを指定する必要はありませんか?接続したいインターフェース?もしそうなら、どのように?
ちなみに、一度に接続できる加入者プログラムは1つだけのようです。ローカル IP アドレスへの SUB ソケットに接続しようとする 2 番目のプログラムは、常に「アドレスは使用中です」というエラー メッセージを受け取ります。私は小さなステップで進歩を遂げようとしており、これを学んでいきます. 助けやアドバイスをありがとう。James Hurst、JamesH、Designforge ドットコム