5
次のコードを実行すると、最初にzmq_poll
を呼び出したときにエラーが発生します(つまり、-1
を返します)。 zmq_errno()
は128
を返し、zmr_strerror(128)
コールは"Unknown error"
を返します。私はZMQをC++でしばらく使用していましたが、今のところ問題なく、zmq_poll
を呼び出すことはできません。ZMQポーリングが動作しない
zmq::version
を呼び出すと、ZMQバージョン2.1.10が使用されていることがわかります。
zmq_poll
が失敗している理由は誰にもありますか?
#include <zmq/zmq.hpp>
int main(int argc, char* argv[])
{
zmq::context_t context(1);
zmq::socket_t repA(context, ZMQ_REP);
zmq::socket_t repB(context, ZMQ_REP);
repA.bind("tcp://127.0.0.1:5555");
repB.bind("tcp://127.0.0.1:5556");
zmq::pollitem_t items[] =
{
{ &repA, 0, ZMQ_POLLIN, 0 },
{ &repB, 0, ZMQ_POLLIN, 0 }
};
while (true)
{
int rc = zmq_poll(items, 2, 1000);
if (rc < 0)
{
int code = zmq_errno(); //code = 128
auto message = zmq_strerror(code); //message = "Unknown error"
}
}
}
何がerrnoの値ですか? _Uponが失敗すると、zmq_poll()は-1を返し、errnoを以下に定義されている値の1つに設定します._ http://api.zeromq.org/2-1:zmq-poll – flup
@flupこれで 'zmq_poll' doesnエラー番号( '-1'で伝えます)と' zmq_errno() 'を実際に呼び出して実際のエラー番号を返さなければなりません。これをして、私はエラー番号 '128'を取得します。 (更新された質問) –
_zmq_pollitem_t構造体で使用するØMQソケットを取得するには、socket_tクラスのインスタンスを(void *)_にキャストする必要があります。だから私はあなたのアドレスを送信する代わりに 'repA'をキャストすべきだと思う。 – flup