无法在订户VM上接收消息(VirtualBox上的ZeroMQ)

时间:2019-09-29 11:25:19

标签: virtualbox zeromq

我在VirtualBox中有两个OpenWrt(18.06.4)VM(A和B),我正在尝试使用ZeroMQ以发布者-订阅者方案发送消息。 A 是服务器, B 是客户端。

我正在使用以下代码:

它可以在我的计算机上使用,所以我决定在VM上尝试使用它。

我必须同时编译两个文件(使用SDK),以便可以在VM中执行它们。我编译了两次,更改了一个小细节:

1)客户端正在监听服务器的IP 10.0.1.4

2)客户端侦听服务器的IP 192.168.56.10

这两个版本均在VM中进行了测试,并且服务器均发送消息(send函数执行并打印已发送的消息),但客户端从未收到任何消息(消息始终为null)。

关于我的网络配置。在VirtualBox中,我有一个Nat网络(10.0.1.0/24)和一个virtualbox网络(192.168.56.1/24)。 VM A和VM B都具有仅主机适配器(vboxnet0)和NAT网络适配器。 机器可以互相ping通。

计算机的网络配置如下:

A

config interface 'loopback'
    option ifname 'lo'
    option proto 'static'
    option ipaddr '127.0.0.1'
    option netmask '255.0.0.0'

config globals 'globals'
    option ula_prefix 'fd03:84ea:bc33::/48'

config interface 'lan'
    option ifname 'eth0'
        option proto 'static'
    option ipaddr '192.168.56.10'
    option netmask '255.255.255.0'

config interface 'wan'
    option ifname 'eth1'
    option proto 'dhcp'

注意:当前NAT网络IP(“ wan”)为10.0.1.4

B

config interface 'loopback'
    option ifname 'lo'
    option proto 'static'
    option ipaddr '127.0.0.1'
    option netmask '255.0.0.0'

config globals 'globals'
    option ula_prefix 'fdea:4700:64aa::/48'

config interface 'lan'
    option ifname 'eth0'
    option proto 'static'
    option ipaddr '192.168.56.20'
    option netmask '255.255.255.0'

config interface 'wan'
    option ifname 'eth1'
    option proto 'dhcp'

注意:当前NAT网络IP(“ wan”)为10.0.1.5

你们是否知道可能是什么问题?我应该更改每个VM内的网络配置和/或更改VirtualBox上的适配器吗?

1 个答案:

答案 0 :(得分:1)

避免依赖符号地址解析:

// zmq_bind (publisher, "tcp://*:5563");          // PUB-side wildcard-address translated
   zmq_bind (publisher, "tcp://10.0.1.4:5563");  //           explicit address

// zmq_connect (subscriber, "tcp://localhost:5563"); // SUB-side symbolic-address
   zmq_connect (subscriber, "tcp://10.0.1.4:5563"); //           explicit-address