问题描述
ITNOA
嗨,
string address = "tcp://";
address += ip_address;
address += ":";
address += to_string(port);
socket = new zmq::socket_t(get_context_instance(),ZMQ_DEALER);
set_socket_linger_period();
// A random id will be used if id is not set
if (id != "") socket->set(zmq::sockopt::routing_id,id);
并使用如下所示的套接字发送消息
zmq::message_t zmq_message(message_size);
memcpy(zmq_message.data(),message,message_size);
return socket->send(zmq_message);
并具有如下所示的服务器套接字
string endpoint = "tcp://";
endpoint += interface_name;
endpoint += ":";
endpoint += to_string(port);
socket = new zmq::socket_t(get_context_instance(),ZMQ_ROUTER);
并从如下所示的服务器套接字接收
zmq::message_t id;
if (!socket->recv(&id,0)) return 0;
last_caller_id = string(static_cast<char*>(id.data()),id.size());
zmq::message_t reply;
if (!socket->recv(&reply,0)) return 0;
我的问题是,当id
未设置(空字符串)时,发送和接收工作正常,但是当我将id
设置为诸如"FOO_BAR_ID"
之类的字符串时,接收方法不起作用并且前recv
(id的接收)未完成并阻止无限。
所以我的问题是,我的问题是什么以及如何解决这个问题?
我在Ubuntu 20.04.1上使用最新版本的cppzmq和libzmq 4.3.2
非常感谢
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)