0

我在 Windows 上使用 ZeroMQ,使用 C#,并且对一个非常基本的网络问题感到困惑。我设置了简单的示例程序,一个用于发布消息,其他使用 SUB 套接字来接收它们(SUBscriber 程序)。当两者都在同一个盒子上时工作正常。我使用了端点 tcp://127.0.0.1:5000 作为下一步,我将 SUBscriber 程序放在单独的虚拟机 (VM) 上,以模拟使用单独的计算机。我运行 ipconfig 来获取它的 IP 地址(在来宾操作系统上),192.168.92.136 主机操作系统有几个网络接口,其中一个是 VMware 网络适配器 VMnet1,IP 为 192.168.92.1 在主机操作系统上,我运行了 PUB程序并将套接字连接到来宾操作系统的IP地址192.168.92.136。在来宾操作系统上,我运行了 SUB 程序并将套接字连接到主机操作系统的 IP。不工作。然后我更改了客户操作系统上的SUB程序,使其连接到它自己的IP地址,即客户操作系统的IP地址 - 192.168.92.136。现在它起作用了!

问:为什么?我很困惑。但在某种程度上它是有道理的:如果该套接字用于处理动态来去的各种客户端的服务,它不知道每个客户端的 IP 地址。因此,您将什么指定为 SUB 套接字的 IP 地址?!所以将它连接到它自己的主机IP地址确实解决了这个问题。但是 ZeroMQ 指南并没有在任何地方这么说!一个相关的问题是:如果您的主机有多个网络接口,并且每个都有自己的 IP 地址,那么如果您使用其他主机的 IP 地址将您的套接字连接到其他主机 - 您不需要指定其中哪个网络要连接的接口?如果是这样,怎么做?

顺便说一句,一次似乎只有一个订户程序能够连接。第二个尝试将其 SUB 套接字连接到本地 IP 地址的程序总是会收到“地址正在使用”错误消息。我试图在小步骤中取得进展,并在我前进的过程中学习这一点。感谢您的任何帮助或建议。Designforge dot com 的 James Hurst、JamesH

4

0 回答 0