2013-01-07 34 views
2

我使用ZeroMQ的C接口在多臺機器之間分配計算。在本地,一切按照預期與tcp://localhost:5555一起工作。但是,當在兩臺機器A和B上運行客戶機和服務器時,請求和答覆僅在服務器在A上運行並且客戶機在B上運行時起作用。如果反過來,則只有在B上接收到請求並且A上的客戶永遠不會收到回覆。ZeroMQ請求/回覆不會在一個方向上回復

爲了驗證,我正確地設置了一切,我編譯了ZeroMQ指南中的第一個example,但也存在同樣的問題。

這種行爲的原因是什麼?

回答

2

問題很可能是由兩個不兼容的0MQ版本引起的。

這是0MQ v3.0.x,3.1.x,3.2.0,3.2.1中的一個已知問題。這些版本都使用了協議的無證書,不兼容的版本(沒有版本號,所以很難獲得互操作性),最終在3.2.2版中得到修復。如果您運行的是舊版本,並且這可能是隨您使用的語言綁定一起提供的,請將其升級。如果有很多原因導致您無法升級,例如你有狂野的客戶正在使用舊版本,在zeromq-dev列表中詢問,有人可能會提供幫助。對於它的價值,該協議現在有版本號,並向後兼容以前的穩定版本(2.2和2.1)。

+0

順便提一句,這個問題在常見問題解答中:http://www.zeromq.org/area:faq#toc6(我剛剛添加了關於請求回覆的部分) –

+0

感謝您的回答。我在所有機器上從源代碼安裝了3.2.2,它工作正常。 – matthias