ZMQ消息可以包含多个帧,这在实际应用中非常常见.
多帧消息的每一帧都是一个zmq_msg结构,也就是说,当你在收发含有五个帧的消息时,你需要处理五个zmq_msg结构。你可以将这些帧放入一个数据结构中,或者直接一个个地处理它们。
下面的代码演示如何发送多帧消息:
zmq_msg_send (&message, socket, ZMQ_SNDMORE); ... zmq_msg_send (&message, socket, ZMQ_SNDMORE); ... zmq_msg_send (&message, socket, 0);
然后我们看看如何接收并处理这些消息,这段代码对单帧消息和多帧消息都适用:
while (1) { // 处理一帧消息 zmq_msg_t message; zmq_msg_init (&message); zmq_msg_recv (&message, socket, 0); zmq_msg_close (&message); // 已到达最后一帧 int64_t more; zmq_getsockopt (socket, ZMQ_RCVMORE, &more,