2016-09-28 33 views
0

当使用零拷贝进行接收时,有没有一种方法可以查询接收到的邮件的大小?零拷贝接收和邮件大小

有了这个,我(努力)实现零拷贝:

zmq_recv(sock, buf, sizeof(buf), 0); 

我也试过:

zmq_msg_t msg; 
zmq_msg_init_data (&msg, buf, sizeof(buf), nullptr, NULL); 
zmq_msg_recv(&msg, sock, 0); 
size_t len = zmq_msg_size(&msg); 

这将返回正确的大小,但没有填满buf。我认为zmq_msg_init_data不适用于zmq_msg_recv,并且在接收时重建消息。

回答

3

引述guide零拷贝:

有没有办法做到在接受零拷贝:ZeroMQ送你,你可以,只要你想存储缓冲,但不会写数据直接进入应用程序缓冲区

零拷贝仅用于发送,不用于接收。

哦和zmq_recv返回接收的字节数。

+0

当谷歌搜索'zmq_recv'我被重定向到ZMQ 2.1文件,并忽略这是非常古老的。 –