C++11 ZeroMQ服务器客户端启动序列

C++11 ZeroMQ服务器客户端启动序列,c++11,zeromq,C++11,Zeromq,如果客户端在服务器之前启动,则面临问题 规格:ubuntu 16.04和c++11,libzmq:4.2.3 问题:示例代码 server.cpp int main() { zmq::context_t context(1); zmq::socket_t requester(context,ZMQ_ROUTER); . //code to get address . requester.bind(address); while(true) { zmq::message_t messag

如果客户端在服务器之前启动,则面临问题

规格:ubuntu 16.04和c++11,libzmq:4.2.3

问题:示例代码

server.cpp

int main()
{
zmq::context_t context(1);
zmq::socket_t requester(context,ZMQ_ROUTER);
.
//code to get address
.    
requester.bind(address);

while(true)
{
zmq::message_t message;
requester.recv(&message);
.
//remaining code
.
}
return 0;
}
client.cpp

int main()
{
zmq::context_t context(1);
zmq::socket_t requester(context,ZMQ_DEALER);
.
//code to get address
.
requester.connect(address);
zmq::message_t message;
.
//populate the message to send
.

requester.send(message);
return 0;
}

我知道在zmq中,即使服务器没有运行,我也可以启动客户端,但我的客户端应用程序必须包括一个安全检查,这需要启动服务器。我是否可以通过使连接失败或其他解决方法来实现。超时选项对我不起作用

如果没有服务器,则使发送无阻塞可用发送将失败并设置错误号


使发送无阻塞,如果没有可用的服务器,发送将失败并设置错误号


我会试试的,我会试试的
ZMQ_DONTWAIT
For socket types (DEALER, PUSH) that block when there are no available peers 
(or all peers have full high-water mark), specifies that the operation should 
be performed in non-blocking mode. If the message cannot be queued on the 
socket, the zmq_send() function shall fail with errno set to EAGAIN.