2014-10-19 30 views
1

我製作了一個簡單的C++程序來開始使用0MQ。我有兩個應用程序:一個服務器(具有綁定發行商插座)和一個客戶端(具有連接訂戶)套接字。服務器程序被從一臺遠程機器上拉出並運行 - 我們稱它爲example.com。ZMQ在發佈服務器套接字上生成EAGAIN

ZMQ生產EAGAIN當服務器發送一個簡單的字符串消息與沒有標誌。我通過查看我正在使用的ZMQ CPP綁定知道這一點;只有在引發此錯誤時,socket_t :: send()函數才返回false。我沒有使用返回一個整數的函數,我確定返回值是boolean false。

當客戶端正在運行並連接時,該功能仍然存在。機器打開所有輸入和輸出端口。

爲什麼ZMQ會產生這個錯誤?尤其是,EAGAIN只能在非阻塞模式下提出,但我特別不會要求這種模式。這是發佈者套接字的功能嗎?

回答

0

發送消息時,PUB套接字永不會阻塞。請參閱socket reference這意味着如果郵件無法發送,您將收到EAGAIN。我猜測沒有任何連接的用戶。