无法在订阅者 VM 上接收消息(VirtualBox 上的 ZeroMQ)
Cannot receive messages on subscriber VM (ZeroMQ on VirtualBox)
我在 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 中进行了测试,并且在这两个版本中,服务器发送消息(发送函数执行并打印发送的消息)但客户端从未收到任何消息(消息始终为空)。
关于我的网络配置。在 VirtualBox 中,我有一个 Nat 网络 (10.0.1.0/24) 和一个 virtualbox 网络 (192.168.56.1/24)。 VM A 和 B 都有一个仅主机适配器 (vboxnet0) 和一个 NAT 网络适配器。
机器可以互相ping通。
机器的网络配置如下:
一个
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 内的网络配置 and/or 更改 VirtualBox 上的适配器吗?
避免对符号地址解析的依赖:
// 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
我在 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 中进行了测试,并且在这两个版本中,服务器发送消息(发送函数执行并打印发送的消息)但客户端从未收到任何消息(消息始终为空)。
关于我的网络配置。在 VirtualBox 中,我有一个 Nat 网络 (10.0.1.0/24) 和一个 virtualbox 网络 (192.168.56.1/24)。 VM A 和 B 都有一个仅主机适配器 (vboxnet0) 和一个 NAT 网络适配器。 机器可以互相ping通。
机器的网络配置如下:
一个
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 内的网络配置 and/or 更改 VirtualBox 上的适配器吗?
避免对符号地址解析的依赖:
// 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