Please ignore my original message. Linger!
*facepalm* On 13 August 2015 at 13:28, James Chapman <[email protected]> wrote: > Resending, this time from the subscribed email address. Apologies if you > receive this twice. > > > Hi ZeroMQ community. > > I'm using ZeroMQ 4.1.2 in C++ and I've created a push pull pair of apps to > demonstrate the issue I'm seeing. > > When the Push app sends messages with the Pull app, the push sends but the > pull doesn't receive. > In the process of trying to establish what was blocking the receive, I > noticed that the push machine sends a SYN packet, the pull machine replies > with a SYN ACK, and instead of the push machine sending a SYN ACK ACK, it > sends a RST. > > The issue does not occur when running both apps on the same host. > > Push machine is Windows 2008 VM on Citrix Xen Server, Pull machine is > Windows 10, although I don't believe the platform to be the issue. > > Is this a bug or have I done something very wrong? > > push/pull code below. > > > Thanks > James > > > > > > > ------------------------------------------------ > // PUSH > #include <iostream> > #include <string> > #include <thread> > #include <chrono> > > #include "zmq.hpp" > > > int main() > { > for (int i = 0; i < 100; ++i) > { > ::zmq::context_t context(1); > auto pZmqSocket(new ::zmq::socket_t(context, ZMQ_PUSH)); > > std::string addressString = "tcp://192.168.0.5:9991"; > pZmqSocket->connect(addressString.c_str()); > > int linger = 0; > > pZmqSocket->setsockopt(ZMQ_LINGER, &linger, sizeof(linger)); > > std::string buffer = "Hello world!"; > > auto pZmqMsgOut(new ::zmq::message_t(buffer.length())); > memcpy(pZmqMsgOut->data(), buffer.c_str(), buffer.length()); > pZmqSocket->send(*pZmqMsgOut); > > std::cout << "Message sent" << std::endl; > > pZmqSocket->disconnect(addressString.c_str()); > pZmqSocket->close(); > > delete pZmqSocket; > > std::this_thread::sleep_for(std::chrono::milliseconds(1000)); > } > > return 0; > } > > > ------------------------------------------------ > // PULL > #include <iostream> > > #include "zmq.hpp" > > int main() > { > ::zmq::context_t zmqContext(1); > auto pPullSocket(new ::zmq::socket_t(zmqContext, ZMQ_PULL)); > > ::std::string pullSocketString = "tcp://0.0.0.0:9991"; > pPullSocket->bind(pullSocketString.c_str()); > > ::zmq::pollitem_t items[] = { > { *pPullSocket, 0, ZMQ_POLLIN, 0 } > }; > > while (1) > { > auto pZmqMsgIn(new ::zmq::message_t()); > > zmq::poll(items, 1, -1); > > if (items[0].revents & ZMQ_POLLIN) > { > std::cout << "rEvent" << std::endl; > auto bReceived = false; > if (pPullSocket->recv(pZmqMsgIn)) > { > bReceived = true; > } > > if (bReceived) > { > std::string buffer((char *)pZmqMsgIn->data()); > std::cout << "Received: " << buffer << std::endl; > } > > delete pZmqMsgIn; > } > } > > return 0; > } > >
_______________________________________________ zeromq-dev mailing list [email protected] http://lists.zeromq.org/mailman/listinfo/zeromq-dev
