[英]ZMQ PUSH PULL half of each message sent
我正在嘗試發送圖像流,每個圖像流約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());
}
我希望通過的所有圖像都可以通過,並且味精的大小符合預期,但是,圖像被“裁剪”了-直到圖像上的水平線(每個圖像中的同一行),圖像是正確的,然后完全是黑色的。 有時在黑色部分會有些雜音。
有誰知道這可能是什么原因?
ZeroMQ發送函數(無論是兩種類型,還是自計數data.sizeOf()
) 都可以 透明且按字面意思進行傳遞。
指示發送的字節數(或字節數)確實發送。
沒有例外,沒有任何借口。
因此,如果您指示ZeroMQ僅發送原始文件的一小部分,那么您就可以了。 您只得到了指示的分數(無論是有意還是有誤)。
修復您的數據-“ 成幀 ”(在這種情況下為數據-“截止”),或使用安全模式,自動包裝的容器來傳遞內容,而與可變大小無關。
如有疑問,只需嘗試將圖像數據放入JSON或什至更易於閱讀的情況下,將其存儲在ZIP文件中以進行此類測試。
然后,將其移動到ZeroMQ消息傳遞層上,並嘗試從JSON / ZIP文件內部重構數據。
在那里,您會注意到截止失敗的根源-數據量計算錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.