<div dir="ltr">Ok. I suspected something like this.<br><br>This information could be more clearly stated at ZMQ API (<a href="http://api.zeromq.org/">http://api.zeromq.org/</a>)? Or maybe I just did not find it. I tried to read the socket and send pages, but they were not very clear on this matter. But now I know and I will look also the specs next time I have a problem.<br>
<br>Thanks for the fast reply.<br><br></div><div class="gmail_extra"><br><br><div class="gmail_quote">2013/11/13 Pieter Hintjens <span dir="ltr"><<a href="mailto:ph@imatix.com" target="_blank">ph@imatix.com</a>></span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Indeed, PUSH and DEALER sockets do not accept messages until a<br>
connection is established. The formal specification of these sockets<br>
is here: <a href="http://rfc.zeromq.org/spec:30" target="_blank">http://rfc.zeromq.org/spec:30</a><br>
<br>
-Pieter<br>
<div><div class="h5"><br>
On Wed, Nov 13, 2013 at 12:44 PM, Panu Wetterstrand<br>
<<a href="mailto:panu.wetterstrand@iki.fi">panu.wetterstrand@iki.fi</a>> wrote:<br>
> Hi,<br>
><br>
> this is probably just error between the chair and screen, but I can't figure<br>
> out what I am doing wrong. I am under the impression that type of the socket<br>
> and whether it binds or connect is separated concern when using zmq.<br>
><br>
> But it seems that PULL and PUSH sockets do not work that independent from<br>
> connect/bind concepts. Case where PUSH connects and PULL is binded and<br>
> connection is declared before bind everything works as expected. But if PULL<br>
> socket is connected or binded before, problems start to occur.<br>
><br>
> For example this fails:<br>
><br>
>     @Test(timeOut = 5000)<br>
>     public void pushBindsBeforePullConnects() throws Exception {<br>
>         ZMQ.Context context = ZMQ.context(1);<br>
>         try (ZMQ.Socket pullSocket = context.socket(ZMQ.PULL);<br>
>                 ZMQ.Socket pushSocket = context.socket(ZMQ.PUSH)) {<br>
><br>
>             pushSocket.bind("tcp://*:12345");<br>
>             pullSocket.connect("tcp://localhost:12345");<br>
><br>
>             pushSocket.send("bytes", ZMQ.NOBLOCK);<br>
>             Assert.assertEquals(pullSocket.recvStr(), "bytes");<br>
><br>
>         } finally {<br>
>             context.term();<br>
>         }<br>
>     }<br>
><br>
><br>
> Test will wait for message forever (or at least impractically long). However<br>
> if blocking send is used test will pass. It seems that PUSH socket does not<br>
> accept any messages before connection has been made. I would have thought<br>
> that PUSH would accept messages until HWM is reached.<br>
><br>
> Any idea what am I doing wrong?  I am using libzmq version 3.2.4 and jzmq<br>
> bindigs version 2.2.2.<br>
> --<br>
> Panu<br>
><br>
</div></div>> _______________________________________________<br>
> zeromq-dev mailing list<br>
> <a href="mailto:zeromq-dev@lists.zeromq.org">zeromq-dev@lists.zeromq.org</a><br>
> <a href="http://lists.zeromq.org/mailman/listinfo/zeromq-dev" target="_blank">http://lists.zeromq.org/mailman/listinfo/zeromq-dev</a><br>
><br>
<span class="HOEnZb"><font color="#888888"><br>
<br>
<br>
--<br>
-<br>
Pieter Hintjens<br>
CEO of iMatix.com<br>
Founder of ZeroMQ community<br>
blog: <a href="http://hintjens.com" target="_blank">http://hintjens.com</a><br>
_______________________________________________<br>
zeromq-dev mailing list<br>
<a href="mailto:zeromq-dev@lists.zeromq.org">zeromq-dev@lists.zeromq.org</a><br>
<a href="http://lists.zeromq.org/mailman/listinfo/zeromq-dev" target="_blank">http://lists.zeromq.org/mailman/listinfo/zeromq-dev</a><br>
</font></span></blockquote></div><br></div>