繁体   English   中英

如何使用引用发送 ZMQ 消息?

[英]How to send a ZMQ message using a reference?

ZMQ_REQ / ZMQ_REP示例中,初始化缓冲区,然后使用memcpy将消息复制到其中。

具体来说:

zmq::message_t reply (5);
memcpy (reply.data (), "World", 5);
socket.send (reply);

如何使用字符指针引用回复消息?

也就是说,类似于以下内容:

char* text = "Hello";
zmq::message_t reply ();
socket.send (text);

在您提供的示例中,您发送的不是引用而是指针。

使用 ZMQ API,您必须memcpy消息缓冲区中的数据。

您可以编写自己的包装函数

bool send(zmq::socket_t& socket, const std::string& string) {
    zmq::message_t message(string.size());
    std::memcpy (message.data(), string.data(), string.size());
    bool rc = socket.send (message);
    return (rc);
}

bool send(zmq::socket_t& socket, const char* data) {
    size_t size = strlen(data); // Assuming your char* is NULL-terminated
    zmq::message_t message(size);
    std::memcpy (message.data(), data, size);
    bool rc = socket.send (message);
    return (rc);
}

然后用这样的东西发送你的消息:

char* text = "Hello";
send(socket, text);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM