問題

我在VirtualBox中有兩個OpenWrt(18.06.4)VM(A和B),我正在嘗試使用ZeroMQ在publisher-authers方案中傳送訊息. a是伺服器,B是客戶端.

我正在使用以下程式碼:

它在我的電腦上工作,所以我決定在VM上嘗試。

我必須編譯兩者(使用SDK),所以我可以在VM中執行它們.我編譯了兩次,更改了一個小細節:

1)監聽伺服器IP 10.0.1.4的客戶端

2)客戶端監聽伺服器的IP 192.168.56.10

兩個版本都在 VM 中測試,在這兩個版本中,伺服器都發送訊息(傳送函式執行並打印發送的訊息),但客戶端從未收到任何訊息(訊息總是為 null)。

關於我的網路配置.在VirtualBox中,我有一個Nat網路(10.0.1.0/24)和一個virtualbox網路(192.168.56.1/24). VM A和B都有一個只有host的介面卡(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'
 

注: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上的介面卡嗎?

  最佳答案

避免依賴符號地址決議:

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

  相同標籤的其他問題

virtualboxzeromq