nanomsg 是否有 'frames' 的概念作为 zeromq?
Does nanomsg have the concept of 'frames' as zeromq?
我使用zeromq 有一段时间了,并且广泛使用多部分消息。在 C++ 中,我使用 zmq_sendiov/zmq_recviov 到 send/recv 多部分消息。好处是我可以将每条消息 'frame' 放在一个 iovec 中,并一次性使用对 send/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可以自由重组缓冲区?
谢谢
拉尔夫
目前在关于这个的文档中什么也没说,但我确信 nanomsg 确保接收到的 iovec
的结构与发送的结构相同,因为存在一个单元测试(见https://github.com/nanomsg/nanomsg/blob/fb5670c952c53834c5c7c989eace7c6bd54bd4c5/tests/iovec.c), 这证实了我的假设。
nanomsg-1.0.0 已经支持iov
nn_sendmsg
我使用zeromq 有一段时间了,并且广泛使用多部分消息。在 C++ 中,我使用 zmq_sendiov/zmq_recviov 到 send/recv 多部分消息。好处是我可以将每条消息 'frame' 放在一个 iovec 中,并一次性使用对 send/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可以自由重组缓冲区?
谢谢 拉尔夫
目前在关于这个的文档中什么也没说,但我确信 nanomsg 确保接收到的 iovec
的结构与发送的结构相同,因为存在一个单元测试(见https://github.com/nanomsg/nanomsg/blob/fb5670c952c53834c5c7c989eace7c6bd54bd4c5/tests/iovec.c), 这证实了我的假设。
nanomsg-1.0.0 已经支持iov nn_sendmsg