【发布时间】:2014-11-17 09:01:05
【问题描述】:
我正在尝试发送图像流,每个图像大约 3.5Mb。要发送,我使用以下格式的代码:
zmq::socket_t sender (*context, ZMQ_PUSH);
sender.connect("tcp://....:5556");
while(...){
zmq::message_t msg (data, (size_t)camHeight*camWidth, NULL,NULL);
sender.send(msg, ZMQ_NOBLOCK);
}
并接收:
zmq::socket_t socket(zmqContext, ZMQ_PULL);
socket.bind("tcp://*:5556");
zmq::message_t msg;
while(..){
socket.recv(&msg);
unsigned char* data = (unsigned char*) msg.data();
...
outFile.write ((char*) data, msg.size());
}
我希望通过的所有图像都通过并且 msg 的大小与预期的一样,但是,图像被“剪裁” - 直到图像上的一条水平线(每张图像中的同一条线),图像是正确的,之后它是完全黑色的。偶尔在黑色部分,有一些杂音。
有人知道是什么原因造成的吗?
【问题讨论】:
-
如果您的图像数据大小仅为
camHeight*camWidth(以字节为单位),我会感到非常惊讶;我怀疑您的图像是每个像素一个字节。根据您的观察,您只发送了图像的一部分,因为您的消息大小太小,而图像的剩余部分只是未初始化的内存(通常是黑色 0,但有时是随机的非零数据)。 -
是的,我忘记了 3 个频道,谢谢!
标签: c++ networking zeromq