<div dir="ltr">Hi,<br><br>this is probably just error between the chair and screen, but I can't figure out what I am doing wrong. I am under the impression that type of the socket 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 connect/bind concepts. Case where PUSH connects and PULL is binded and connection is declared before bind everything works as expected. But if PULL socket is connected or binded before, problems start to occur.<div>
<br></div><div>For example this fails:<br><br><div><font face="courier new, monospace">    @Test(timeOut = 5000)</font></div><div><font face="courier new, monospace">    public void pushBindsBeforePullConnects() throws Exception {</font></div>
<div><font face="courier new, monospace">        ZMQ.Context context = ZMQ.context(1);</font></div><div><font face="courier new, monospace">        try (ZMQ.Socket pullSocket = context.socket(ZMQ.PULL);</font></div><div><font face="courier new, monospace">                ZMQ.Socket pushSocket = context.socket(ZMQ.PUSH)) {</font></div>
<div><font face="courier new, monospace"><br></font></div><div><div><font face="courier new, monospace">            pushSocket.bind("tcp://*:12345");</font></div><div><font face="courier new, monospace">            pullSocket.connect("tcp://localhost:12345");</font></div>
</div><div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">            pushSocket.send("bytes", ZMQ.NOBLOCK);</font></div><div><font face="courier new, monospace">            Assert.assertEquals(pullSocket.recvStr(), "bytes");</font></div>
<div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">        } finally {</font></div><div><font face="courier new, monospace">            context.term();</font></div><div><font face="courier new, monospace">        }</font></div>
<div><font face="courier new, monospace">    }</font></div></div><div><br></div><div><br></div><div>Test will wait for message forever (or at least impractically long). However if blocking send is used test will pass. It seems that PUSH socket does not accept any messages before connection has been made. I would have thought that PUSH would accept messages until HWM is reached.</div>
<div><br></div><div>Any idea what am I doing wrong?  I am using libzmq version 3.2.4 and jzmq bindigs version 2.2.2.</div><div>-- </div><div>Panu</div></div>