2

我一直在使用 zeromq 一段时间,并广泛使用多部分消息。在 C++ 中,我使用 zmq_sendiov/zmq_recviov 来发送/接收多部分消息。好处是我可以将每个消息“帧”放在一个 iovec 中,并一次使用调用发送/接收。

最近我决定试试 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可以自由地重新组装缓冲区?

谢谢拉尔夫

4

2 回答 2

1

目前在有关此的文档中什么也没说,但我确信 nanomsg 确保iovec接收到的结构与发送的结构相同,因为存在一个单元测试(参见https://github.com/nanomsg/ nanomsg/blob/fb5670c952c53834c5c7c989eace7c6bd54bd4c5/tests/iovec.c),这证实了我的假设。

于 2015-09-30T15:56:43.637 回答
1

nanomsg-1.0.0 already support iov nn_sendmsg

于 2017-01-14T08:59:23.100 回答