[zeromq-dev] PUB sent, but SUB can not receive.

liuchuanbo at gmail.com liuchuanbo at gmail.com
Wed Aug 14 14:45:03 CEST 2013


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!


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.zeromq.org/pipermail/zeromq-dev/attachments/20130814/25ae5741/attachment.htm>


More information about the zeromq-dev mailing list