Brian,

I think this thread 
http://lists.zeromq.org/pipermail/zeromq-dev/2010-August/thread.html#5177 
together with User Guide http://zguide.zeromq.org/chapter:all
answer your questions.


Basically you have to prepend your message by empty part at XREQ side
if the counterpart socket type is REP.

24.09.10, 21:25, "Brian Granger" <[email protected]>:

> Hi,
>  
>  This was a big from earlier this summer that I am still seeing. I am
>  observing an assert error in line rep.cpp:232 when connecting a REP
>  socket to bound XREQ socket.
>  
>  I guess my first question is this:  Is this combination of sockets
>  supported?  That is, should this work?
>  
>  Here is a description of when it shows up:
>  
>  The following is observed on in the 2.0.x series (have not tried the 2.1x)
>  
>  XREQ server                         REP client
>  ===========                         ==========
>  
>  Case 1:
>  
>  import zmq
>  c = zmq.Context()
>  s = c.socket(zmq.XREQ)
>  s.bind('tcp://127.0.0.1:5555')
>                                     import zmq
>                                     c = zmq.Context()
>                                     s = c.socket(zmq.REP)
>                                     s.connect('tcp://127.0.0.1:5555')
>  s.send('asdf')
>                                     s.recv()  --> This gives...
>                                     Assertion failed: fetched (rep.cpp:232)
>                                     Abort trap
>  
>  Case 2:
>  
>  import zmq
>  c = zmq.Context()
>  s = c.socket(zmq.XREQ)
>  s.bind('tcp://127.0.0.1:5555')
>  s.send('asdf')
>                                     import zmq
>                                     c = zmq.Context()
>                                     s = c.socket(zmq.REP)
>                                     s.connect('tcp://127.0.0.1:5555')
>                                     s.recv() --> This gives
>                                     Assertion failed: fetched (rep.cpp:232)
>                                     Abort trap
>  
>  
>  
>  Case 3:
>  
>  import zmq
>  c = zmq.Context()
>  s = c.socket(zmq.XREQ)
>  s.bind('tcp://127.0.0.1:5555')
>                                     import zmq
>                                     c = zmq.Context()
>                                     s = c.socket(zmq.REP)
>                                     s.connect('tcp://127.0.0.1:5555')
>                                     s.recv()  # This blocks
>  s.send('asdf')              ------> Right as s.send('adsf') is called
>                                     Assertion failed: fetched (rep.cpp:232)
>                                     Abort trap
>  
>  Some important points:
>  
>  * Does not happen with client is an XREP, server is XREQ.
>  * Does not happen with client as REP, server as REQ.
>  
>  Any help you can provide in debugging this would be greatly appreciated!
>  
>  Thanks and cheers,
>  
>  Brian
>  
>  
>  

-- 
Best regards,
Ilja Golshtein.
_______________________________________________
zeromq-dev mailing list
[email protected]
http://lists.zeromq.org/mailman/listinfo/zeromq-dev

Reply via email to