C++ 设置ZMQ_路由_ID导致recv无法与cppzmq一起工作

C++ 设置ZMQ_路由_ID导致recv无法与cppzmq一起工作,c++,zeromq,C++,Zeromq,ITNOA 嗨 我有如下的客户端套接字 string address=“tcp://”; 地址+=ip_地址; 地址+=“:”; 地址+=至_字符串(端口); socket=new zmq::socket\u t(get\u context\u instance(),zmq\u DEALER); 设置_socket_linger_period(); //如果未设置id,则将使用随机id if(id!=“”)socket->set(zmq::sockopt::routing_id,id); 并使

ITNOA

我有如下的客户端套接字

string address=“tcp://”;
地址+=ip_地址;
地址+=“:”;
地址+=至_字符串(端口);
socket=new zmq::socket\u t(get\u context\u instance(),zmq\u DEALER);
设置_socket_linger_period();
//如果未设置id,则将使用随机id
if(id!=“”)socket->set(zmq::sockopt::routing_id,id);
并使用如下所示的套接字发送消息

zmq::message\u t zmq\u message(message\u size);
memcpy(zmq_message.data(),message,message_size);
返回套接字->发送(zmq_消息);
并具有如下所示的服务器套接字

string endpoint=“tcp://”;
端点+=接口名称;
端点+=“:”;
端点+=到_字符串(端口);
socket=new zmq::socket\u t(获取上下文实例(),zmq\u路由器);
并从服务器套接字接收,如下所示

zmq::消息id;
如果(!socket->recv(&id,0))返回0;
last_caller_id=string(static_cast(id.data()),id.size());
zmq::消息回复;
如果(!socket->recv(&reply,0))返回0;
我的问题是当
id
未正确设置(空字符串)发送和接收工作时,但当我将
id
设置为某个字符串,如
“FOO\u BAR\u id”
接收方法不工作,并且第一个
recv
(id的recv)未完成并阻止无限

所以我的问题是,我的问题是什么,如何解决

我在Ubuntu 20.04.1上使用最新版本的cppzmq和libzmq 4.3.2


非常感谢

您能提供一个完整的、可运行的示例吗?这里至少缺少连接/绑定套接字的部分。