病みつきエンジニアブログ

機械学習、Python、Scala、JavaScript、などなど

ZMQ(ØMQ)、動いたり動かなかったり

ØMQ のサンプルコードが謎に動かなかったりして、困った。。。
要求としては、PUSHをする側をC++で作ろうとしていて、PULLはnode.jsでします。
https://github.com/imatix/zguide のサンプルコードを使いました。
同じような処理なのに動いたり動かなかったりして、困ったのですが、一応下のコードでやりたいことは出来ました。
(何の違いがあったんだろう。)

#include "zhelpers.hpp"

int main (int argc, char *argv[])
{
    zmq::context_t context(1);

    //  Socket to send messages to
    zmq::socket_t sender(context, ZMQ_PUSH);
    sender.bind("tcp://*:5558");
    //doesn't work with sender.connect("tcp://localhost:5558")

    //  Process tasks forever
    while (true) {

        zmq::message_t message;
        s_sleep(500);
        printf("sending...\n");

        //  Send results to sink
        message.rebuild(6);
        sprintf((char *) message.data(), "Hello");
        //doesn't work with snprintf, fffffffffffff
        sender.send(message);
    }
    return 0;
}

サーバー側はhttps://github.com/JustinTulloss/zeromq.node のworker.js をまるっと使ってます。