Big big error : subscriber.setsockopt(ZMQ_SUBSCRIBE, "A"); => subscriber.setsockopt(ZMQ_SUBSCRIBE, "A", 1);
With this fix ( and Sleep(10) ), it works perfectly ! Thanks, kin On Fri, Sep 23, 2016 at 2:43 PM, Luca Boccassi <[email protected]> wrote: > Not that strange, the connect is asynchronous, so there is absolutely > no guarantee on when it actually happens, by design. > > In production, if you need synch, either use an out-of-band control > channel (eg: req-rep) or switch to XPUB, which gives you notifications > of subscribe/unsubscribe. > > On 23 September 2016 at 13:16, Aurélien .... <[email protected]> wrote: > > Hi, > > > > I had to increase the "sleep" to 5 seconds and it worked. > > > > Strange ! > > > > On Fri, Sep 23, 2016 at 10:00 AM, Aurélien .... <[email protected]> > wrote: > >> > >> I tried with 127.0.0.1 on bind and connect functions, it didn't worked. > >> > >> I also tried on Linux (Ubuntu 16.04), same result. > >> > >> Very strange ! > >> > >> On Thu, Sep 22, 2016 at 7:12 PM, Luca Boccassi <[email protected] > > > >> wrote: > >>> > >>> Windows has some weirdness on the localhost I think, try to avoid the > >>> wildcard and bind and connect to 127.0.0.1 > >>> > >>> On 22 September 2016 at 17:57, Aurélien .... <[email protected]> > wrote: > >>> > Thank you for your replies. > >>> > > >>> > I tried with that : > >>> > > >>> > zmq::socket_t subscriber(context, ZMQ_SUB); > >>> > subscriber.connect("tcp://localhost:5563"); > >>> > Sleep(1000); > >>> > subscriber.setsockopt(ZMQ_SUBSCRIBE, "A"); > >>> > Sleep(1000); > >>> > > >>> > And it stiil does not work. > >>> > > >>> > I also tried with the ZMQ version 4.2.0, same result. > >>> > > >>> > I forgot to tell that I'm using the static version of ZMQ (with the > >>> > ZMQ_STATIC preprocessor variable), maybe it has something to do ? > >>> > > >>> > Thank you, > >>> > > >>> > Kin > >>> > > >>> > On Thu, Sep 22, 2016 at 6:28 PM, Dimos Stamatakis < > [email protected]> > >>> > wrote: > >>> >> > >>> >> That's right. I remember reading this on the instructions on how to > >>> >> build > >>> >> a pub-sub system in ZeroMQ. There is limited availability, since as > >>> >> Ian said > >>> >> they wanted to build something fast and make it reliable, rather > than > >>> >> building something reliable and make it fast. > >>> >> > >>> >> Dimos > >>> >> > >>> >> On Thu, Sep 22, 2016 at 12:21 PM, Colin Ingarfield > >>> >> <[email protected]> > >>> >> wrote: > >>> >>> > >>> >>> The subscriber connect() call is asynchronous. It's possible the > >>> >>> publish > >>> >>> messages are sent before the subscribe socket connects and > >>> >>> establishes its > >>> >>> subscription. > >>> >>> > >>> >>> Try sleeping for 100ms or so after the connect call, before the > loop. > >>> >>> > >>> >>> > >>> >>> On 9/22/16 11:10 AM, Aurélien .... wrote: > >>> >>> > >>> >>> Hi, > >>> >>> > >>> >>> I'm trying to make a simple PUB / SUB test. > >>> >>> > >>> >>> First, I created the publisher, then the subscriber with a message > to > >>> >>> subscribe. > >>> >>> > >>> >>> Second, I send some messages from the publisher and I try to > retreive > >>> >>> them from the subscriber. > >>> >>> > >>> >>> The code compiles but the subscriber does not receive any data. > >>> >>> > >>> >>> My config is : > >>> >>> - Windows 7 / Visual Studio 2015 > >>> >>> - Compile in /MTd (debug) > >>> >>> - ZMQ Version : 4.1.4 > >>> >>> > >>> >>> Here is the code : > >>> >>> > >>> >>> #include "zhelpers.hpp" > >>> >>> > >>> >>> void TestPubSub() > >>> >>> { > >>> >>> zmq::context_t context; > >>> >>> zmq::socket_t publisher(context, ZMQ_PUB); > >>> >>> zmq_bind(publisher, "tcp://*:5563"); > >>> >>> > >>> >>> zmq::socket_t subscriber(context, ZMQ_SUB); > >>> >>> subscriber.connect("tcp://localhost:5563"); > >>> >>> subscriber.setsockopt(ZMQ_SUBSCRIBE, "A"); > >>> >>> > >>> >>> while (1) { > >>> >>> // Write two messages, each with an envelope and content > >>> >>> s_sendmore(publisher, "A"); > >>> >>> s_send(publisher, "We don't want to see this"); > >>> >>> s_sendmore(publisher, "B"); > >>> >>> s_send(publisher, "We would like to see this"); > >>> >>> > >>> >>> // Read envelope with address > >>> >>> std::string addr = s_recv(subscriber); // block here, waiting for > >>> >>> messages which does not come > >>> >>> // Read message contents > >>> >>> std::string contents = s_recv(subscriber); > >>> >>> } > >>> >>> } > >>> >>> > >>> >>> int main(int argc, char** argv) > >>> >>> { > >>> >>> TestPubSub(); > >>> >>> return 0; > >>> >>> } > >>> >>> > >>> >>> Can you tel me where I'm wrong ? > >>> >>> > >>> >>> Thank you very much, > >>> >>> > >>> >>> Kin > >>> >>> > >>> >>> > >>> >>> _______________________________________________ > >>> >>> zeromq-dev mailing list > >>> >>> [email protected] > >>> >>> http://lists.zeromq.org/mailman/listinfo/zeromq-dev > >>> >>> > >>> >>> > >>> >>> > >>> >>> _______________________________________________ > >>> >>> zeromq-dev mailing list > >>> >>> [email protected] > >>> >>> http://lists.zeromq.org/mailman/listinfo/zeromq-dev > >>> >> > >>> >> > >>> >> > >>> >> _______________________________________________ > >>> >> zeromq-dev mailing list > >>> >> [email protected] > >>> >> http://lists.zeromq.org/mailman/listinfo/zeromq-dev > >>> > > >>> > > >>> > > >>> > _______________________________________________ > >>> > zeromq-dev mailing list > >>> > [email protected] > >>> > http://lists.zeromq.org/mailman/listinfo/zeromq-dev > >>> _______________________________________________ > >>> zeromq-dev mailing list > >>> [email protected] > >>> http://lists.zeromq.org/mailman/listinfo/zeromq-dev > >> > >> > > > > > > _______________________________________________ > > zeromq-dev mailing list > > [email protected] > > http://lists.zeromq.org/mailman/listinfo/zeromq-dev > _______________________________________________ > zeromq-dev mailing list > [email protected] > http://lists.zeromq.org/mailman/listinfo/zeromq-dev >
_______________________________________________ zeromq-dev mailing list [email protected] http://lists.zeromq.org/mailman/listinfo/zeromq-dev
