我似乎无法通过ZeroMQ发送我使用msgpack序列化的vector
{/ 1}}。
这是这个结构的载体:
struct
在发送方:
struct MyData
{
MyData() : id(0), x(0), y(0), a(0) {}
MyData(const Obj &r) : id(0), x(r.pose[0]), y(r.pose[1]), a(r.pose[2]) {}
MyData(const Obj *r) : id(0), x(r->pose[0]), y(r->pose[1]), a(r->pose[2]) {}
double id;
double x;
double y;
double a;
MSGPACK_DEFINE(id, x, y, a);
};
是data
std::vector<MyData>
我构建了msgpack::sbuffer sbuf;
msgpack::pack(sbuf, data);
zmq::message_t msg(sbuf.data(), sizeof(char *) * sbuf.size(), NULL, NULL);
local_socket->send(msg); // this is just zeromq's send function
或sbuffer
错误吗?
在接收方:
我不确定我是否应该投射message_t
但是我找不到任何关于如何使用ZeroMQ和messagepack的好文档。
msg.data()
我收到以下错误:
在抛出'msgpack :: type_error'实例后终止调用 what():std :: bad_cast Aborted
我将不胜感激。
答案 0 :(得分:6)
这对我来说似乎已经成功了:
msgpack::sbuffer sbuf;
msgpack::pack(sbuf, data);
zmq::message_t msg(sbuf.size());
memcpy(msg.data(), sbuf.data(), sbuf.size());