名称

zmq_msg_gets - 获取消息元数据属性

概要

const char *zmq_msg_gets (zmq_msg_t '*message', const char *'property');

描述

zmq_msg_gets() 函数应返回由 'property' 参数指定的元数据属性的字符串值,该属性对应于由 'message' 参数指向的消息。'property' 参数和 'value' 都应是 NULL 终止的 UTF8 编码字符串。

元数据在 ZeroMQ 连接握手期间基于每个连接定义,详见 <rfc.zeromq.org/spec:37>。应用程序可以使用 zmq_setsockopt 的 ZMQ_METADATA 选项来设置元数据属性。应用程序元数据属性必须以 'X-' 开头。

除了应用程序元数据之外,还可以使用 zmq_msg_gets() 函数获取以下 ZMTP 属性

Socket-Type
Routing-Id

注意:'Identity' 是 'Routing-Id' 已弃用的别名。

此外,如果底层传输可用,Peer-Address 属性将返回 getnameinfo(2) 返回的远程端点的 IP 地址。

这些属性的名称也在 zmq.h 中定义为 ZMQ_MSG_PROPERTY_SOCKET_TYPEZMQ_MSG_PROPERTY_ROUTING_IDZMQ_MSG_PROPERTY_PEER_ADDRESS。目前,这些定义仅作为 DRAFT API 提供。

其他属性可能根据底层安全机制定义,参见下面的 ZAP 认证连接示例。

返回值

如果成功,zmq_msg_gets() 函数应返回属性的字符串值。否则,它应返回 NULL 并将 'errno' 设置为以下定义的值之一。调用者不应修改或释放返回的值,该值应由消息拥有。属性和值的编码应为 UTF8。

错误

EINVAL

请求的 property 未知。

示例

获取消息的 ZAP 认证用户 ID
zmq_msg_t msg;
zmq_msg_init (&msg);
rc = zmq_msg_recv (&msg, dealer, 0);
assert (rc != -1);
const char *user_id = zmq_msg_gets (&msg, ZMQ_MSG_PROPERTY_USER_ID);
zmq_msg_close (&msg);

另请参阅

作者

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