Не удается получить сообщения на виртуальной машине подписчика (ZeroMQ на VirtualBox) - PullRequest
2 голосов
/ 29 сентября 2019

У меня есть две виртуальные машины OpenWrt (18.06.4) (A и B) в VirtualBox, и я пытаюсь отправлять сообщения по схеме издатель-подписчик, используя ZeroMQ. A является сервером, B является клиентом.

Я использую следующий код:

, и он работает на моем компьютере, поэтому я решил попробовать его на виртуальных машинах.

Мне пришлось скомпилировать оба (используя SDK), чтобы я мог выполнить их на виртуальных машинах.Я скомпилировал два раза, изменив одну незначительную деталь:

1) клиент, прослушивающий IP 10.0.1.4 сервера

2) клиентпрослушивание IP 192.168.56.10 сервера

Обе версии были протестированы на виртуальных машинах, и в обеих сервер отправляет сообщения (функция отправки выполняет и печатает отправленное сообщение), но клиент никогда не получает сообщение(сообщение всегда пустое).

О конфигурации моей сети.В VirtualBox у меня есть сеть Nat (10.0.1.0/24) и сеть virtualbox (192.168.56.1/24).Обе виртуальные машины A и B имеют адаптер только для хоста (vboxnet0) и сетевой адаптер NAT.Машины могут пинговать друг друга.

Сетевая конфигурация машин следующая:

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'

Примечание: IP-адрес сети NAT ('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'

Примечание: Сеть NATIP ('wan') в настоящее время 10.0.1.5

Ребята, вы знаете, в чем проблема?Нужно ли менять конфигурацию сети внутри каждой виртуальной машины и / или менять адаптеры на VirtualBox?

1 Ответ

0 голосов
/ 30 сентября 2019

Избегайте зависимости от разрешения символьного адреса:

// 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
...