Zmq的pub和sub模式是一种一对多的网络通讯方式。
pub代码示例:
int main(int,char**)
{
zmq::context_t context(1); //若在类中进行封装时,应与socket_t的生命周期一致。
zmq::socket_t pubSocket(context,ZMQ_PUB);
pubSocket.bind("tcp://*:5555");
while(true)
{
std::string strData = "Mark" + "context"; //标记位,接收端用来提取context
zmq::message_t message(strData.size());
memcpy(message.data(), strData.data(), strData.size());
pubSocket.send(message);
sleep(1); //睡眠1秒,保证接收端能正常处理,避免数据拥堵。
}
return 0;
}
sub代码示例:
int main(int,char**)
{
zmq::context_t context(1);
zmq::socket_t subSocket(context,ZMQ_SUB);
subSocket.connect("tcp://localhost:5555");
subSocket.setsockopt(ZMQ_SUBSCRIBE, "Mark", 4);
while(true)
{
zmq::message_t message;
subSocket.recv(&message);
std::cout << "Mark" << std::string(static_cast<char *>(message.data()), message.size()) << std::endl;
}
return 0;
}