[zeromq-dev] Problem with XREP-XREP and inproc

Tore Halvorsen tore.halvorsen at gmail.com
Mon Jan 10 14:15:45 CET 2011


When using XREP to XREP communication, I'm getting different results
based on which socket is bound and which is connected.

I'm using 2.1.0 on windows, the latest version from git - including
commit bd0ba6e89a709cc8afbd5a7c3c4f9f533c428249
Author: Martin Sustrik <sustrik at 250bpm.com>
Date:   Mon Jan 10 13:53:30 2011 +0100

Given the following code:

int main(int argc, char* argv[])
	zmq::context_t context(1);
	zmq::socket_t source(context, ZMQ_XREP);
	source.setsockopt(ZMQ_IDENTITY, "source", 6);

	zmq::socket_t target(context, ZMQ_XREP);
	target.setsockopt(ZMQ_IDENTITY, "target", 6);

	// 1) inproc bound source

	// 2) inproc bound target

	// 3) tcp bound source

	// 4) tcp bound target


	zmq::message_t addr_message(6);
	std::memcpy(addr_message.data(), "target", 6);
	source.send(addr_message, ZMQ_SNDMORE);

	zmq::message_t empty_message;
	source.send(empty_message, ZMQ_SNDMORE);

	zmq::message_t payload_message(7);
	std::memcpy(payload_message.data(), "payload", 7);

	int64_t have_more;
	size_t more_size(sizeof(have_more));
		zmq::message_t recv_message;
		std::cout << "recv: " << recv_message.size() << std::endl;
		target.getsockopt(ZMQ_RCVMORE, &have_more, &more_size);
	} while (have_more != 0);


Both 3 and 4 works with as expected. I receive exactly the same as
inserted into source.
Eg. "target", "", "payload"

Exampel 2 does not receive anything.

Example 1 receives a binary blob (looks like the auto-generated
request IDs), "", "payload"

Any idea what's going on?

Eld på åren og sol på eng gjer mannen fegen og fjåg. [Jøtul]
<demo> 2011 Tore Halvorsen || +052 0553034554

More information about the zeromq-dev mailing list