如何使用引用发送 ZMQ 消息?
How to send a ZMQ message using a reference?
在 ZMQ_REQ
/ZMQ_REP
example 中初始化一个缓冲区,然后使用 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);
在 ZMQ_REQ
/ZMQ_REP
example 中初始化一个缓冲区,然后使用 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);