Hi, everyone
My problem is as the following:

typedef struct tag_WData
{
        string Time;
        string Symbol;
} WData;


On the PUB side. I can get WData.Time.

void OnData(WData wd)
{
        // PUB Socket send ticker message to subscriber
        int msgSize = sizeof(WData);
        zmq::message_t message(msgSize);
        memcpy ((void *) message.data(), &wd, msgSize);

        publisher.send(message);
}


However, on the SUB side, it's very wired that I can NOT get WData.Time, but 
WData.Symbol is correct.

int main (int argc, char *argv[])
{
        zmq::context_t context (1); // only 1 io_threads
        zmq::socket_t subscriber (context, ZMQ_SUB);
        subscriber.connect("tcp://localhost:5556");

        subscriber.setsockopt(ZMQ_SUBSCRIBE, NULL, 0); 
        
        WData *msg;
        while(true){
                zmq::message_t message(sizeof(WData));
                subscriber.recv(&message);
                msg = (WData *) message.data(); 

                // it's ERROR here. error message: Bad ptr
                cout << msg->Time << endl; 
        }
        
        return 0;
}

Why?
Thanks!


_______________________________________________
zeromq-dev mailing list
[email protected]
http://lists.zeromq.org/mailman/listinfo/zeromq-dev

Reply via email to