我一直在使用zeromq并广泛使用多部分消息。在C ++中,我使用zmq_sendiov / zmq_recviov来发送/ recv多部分消息。好处是我可以将每个消息“框架”放在一个iovec中,并一次性使用该调用发送/ recv。
最近我决定尝试一下nanomsg,我发现nanomsg有nn_sendmsg / nn_sendmsg也使用了iovec。问题是:nanomsg确保收到的iovec结构与发送的结构相同吗?例如,假设我把
msg[0].iov_base = "Hello";
msg[0].iov_len = 5;
msg[1].iov_base = "World";
msg[1].iov_len = 5;
并发送,接收端是否会获得相同的iovec数组,每个元素中包含“Hello”和“World”,或者nanomsg可以自由重新组合缓冲区?
由于 拉尔夫
答案 0 :(得分:1)
目前在关于此的文档中没有说什么,但我确信nanomsg确保收到的iovec
的结构与发送的结构相同,因为存在一个单元测试(参见{{ 3}}),这证实了我的假设。
答案 1 :(得分:1)
nanomsg-1.0.0已经支持iov nn_sendmsg