名称

zmq_msg_get - 获取消息属性

概要

int zmq_msg_get (zmq_msg_t '*message', int 'property');

描述

zmq_msg_get() 函数应返回由 `property` 参数指定的消息属性的值,该消息由 `message` 参数指向。

可以使用 zmq_msg_get() 函数检索以下属性:

ZMQ_MORE

指示在该消息之后还有更多的消息帧。

ZMQ_SRCFD

返回读取该消息的套接字的文件描述符。这允许应用程序通过 getpeername(2) 检索远程端点。请注意,相应的套接字可能已经关闭,甚至被重用。目前仅为 TCP 套接字实现此功能。

ZMQ_SHARED

指示消息可能与此消息的另一个副本共享底层存储。

返回值

如果成功,zmq_msg_get() 函数应返回属性的值。否则,应返回 -1 并将 `errno` 设置为下面定义的值之一。

错误

EINVAL

请求的 属性 未知。

示例

接收多帧消息
zmq_msg_t frame;
while (true) {
    //  Create an empty 0MQ message to hold the message frame
    int rc = zmq_msg_init (&frame);
    assert (rc == 0);
    //  Block until a message is available to be received from socket
    rc = zmq_msg_recv (socket, &frame, 0);
    assert (rc != -1);
    if (zmq_msg_get (&frame, ZMQ_MORE))
        fprintf (stderr, "more\n");
    else {
        fprintf (stderr, "end\n");
        break;
    }
    zmq_msg_close (&frame);
}

另请参见

作者

本页面由 0MQ 社区编写。要进行更改,请阅读 0MQ 贡献政策,链接为 https://zeromq.cn/how-to-contribute/