Hi Jens, I did some more experimentation, and the following sequence works to cause the client disconnection:
```cpp // send client some data server.send(id.data(), id.size(), ZMQ_SNDMORE); server.send("A", 1, ZMQ_SNDMORE); // disconnect client server.send(id.data(), id.size(), ZMQ_SNDMORE); server.send("", 0, ZMQ_SNDMORE); ``` In your example code, the server was immediately disconnecting the client without having sent it any other bytes. So it would seem that you have hit a corner case in ZMQ_STREAM. Should this be considered a zmq bug? On Tue, Mar 22, 2016 at 11:11 PM, Auer, Jens <jens.a...@cgi.com> wrote: > Hi, > > ZMQ_STREAM sockets are special and do not follow the normal behavior w.r.t > ZMQ_SNDMORE. You always have to send two messages, the first one is > discarded as the identity frame. If you omit ZMQ_SNDMORE once, you will not > be able to send any messages over the socket again. > > I also tried with and without ZMQ_SNDMORE for the empty message. It does > not make a difference, but sending it twice does. > > Cheers, > Jens > > -- > *Jens Auer *| CGI | Software-Engineer > CGI (Germany) GmbH & Co. KG > Rheinstraße 95 | 64295 Darmstadt | Germany > T: +49 6151 36860 154 > *jens.a...@cgi.com* <jens.a...@cgi.com> > Unsere Pflichtangaben gemäß § 35a GmbHG / §§ 161, 125a HGB finden Sie unter > *de.cgi.com/pflichtangaben* <http://de.cgi.com/pflichtangaben>. > > CONFIDENTIALITY NOTICE: Proprietary/Confidential information belonging to > CGI Group Inc. and its affiliates may be contained in this message. If you > are not a recipient indicated or intended in this message (or responsible > for delivery of this message to such person), or you think for any reason > that this message may have been addressed to you in error, you may not use > or copy or deliver this message to anyone else. In such case, you should > destroy this message and are asked to notify the sender by reply e-mail. > ------------------------------ > *Von:* zeromq-dev-boun...@lists.zeromq.org [ > zeromq-dev-boun...@lists.zeromq.org]" im Auftrag von "Osiris Pedroso [ > opedr...@gmail.com] > *Gesendet:* Dienstag, 22. März 2016 15:03 > *An:* ZeroMQ development list; KIU Shueng Chuan > *Betreff:* Re: [zeromq-dev] Empty message does not close ZMQ_STREAM > socket? > > If I am completely off here, please let me know (still learning ZMQ): > > server.send(id, ZMQ_SNDMORE); > server.send(empty, ZMQ_SNDMORE ); > > But I don't think you should have the ZMQ_SENDMORE flag on the second > send() call. > > Otherwise the message will not be sent, instead waiting for another call > to send() without the flag which only then commits the message to be sent > by underlying code. > > > _______________________________________________ > zeromq-dev mailing list > zeromq-dev@lists.zeromq.org > http://lists.zeromq.org/mailman/listinfo/zeromq-dev > >
_______________________________________________ zeromq-dev mailing list zeromq-dev@lists.zeromq.org http://lists.zeromq.org/mailman/listinfo/zeromq-dev