[zeromq-dev] Crosstalk between sockets
david.myers at avalesta.com
david.myers at avalesta.com
Fri Sep 1 16:12:03 CEST 2017
>>Can you upload a code snippet that reproduces the issue to
>>pastebin/gist/etc?
>>--
>>Kind regards,
>>Luca Boccassi
Thanks Luca,
So the client threads look basically like this:-
zmq::context_t context(1);
char szBuf[32];
// Start Image socket
m_socketImg = new zmq::socket_t(context, ZMQ_REP);
sprintf_s(szBuf, "tcp://*:%d", m_PortNumberImg);
m_socketImg->bind(szBuf);
// Set timeout for Image socket
m_socketImg->setsockopt(ZMQ_RCVTIMEO, 1000);
imageDataHeader ImageHeader;
zmq::message_t ImgHdr((void*)&ImageHeader, sizeof(ImageHeader),
(zmq::free_fn*)EmptyFreeFunct);
zmq::message_t ImgData;
try
{
m_socketImg->recv(&ImgData);
}
catch (...)
{
TRACE(_T("ZMQ Img error\n"));
}
try
{
m_socketImg->send(ImgAck);
}
catch (...)
{
TRACE(_T("ZMQ Img Ack error\n"));
}
The server processes look like this:-
char sImageUrl[32];
sprintf_s(sImageUrl, "tcp://localhost:%d", m_PortNumberImg);
m_psocketImage = new zmq::socket_t (context, ZMQ_REQ);
m_psocketImage->setsockopt(ZMQ_SNDHWM, 100);
m_psocketImage->connect(sImageUrl);
m_psocketImage->setsockopt(ZMQ_RCVTIMEO, 1000);
//now send image data
zmq::message_t imagemessage(imageData->pvData, imageDataLen,
empty_free, (void *)&h1);
try
{
m_ZmqThread->m_psocketImage->send(imagemessage);
}
catch (const zmq::error_t& ze)
{
TRACE(("ZMQ error sending image data: %s\n"), ze.what());
}
//wait for response (not required as we are now a ZMQ_PUSH)
zmq::message_t response;
try
{
bool bRet = m_ZmqThread->m_psocketImage->recv(&response);
}
catch (const zmq::error_t& ze)
{
TRACE(_T("ZMQ error receiving image response: %ws\n"),
ze.what());
}
The above REQ-REP code works well but when I rewrite it using PUSH-PULL
or PUB-SUB or PAIR (removing the Acknowledge code), the server processes
crash when the second one connects, after a number of frames.
- David
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.zeromq.org/pipermail/zeromq-dev/attachments/20170901/2fa2f266/attachment.htm>
More information about the zeromq-dev
mailing list