nanomsg是否有"帧"的概念作为zeromq?

Does nanomsg have the concept of 'frames' as zeromq?

本文关键字:zeromq 是否 nanomsg      更新时间:2023-10-16

我使用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;

和send,接收端是否会得到相同的iovec数组,每个元素中都有"Hello"answers"World",还是nanomsg可以自由地重新组装缓冲区?

谢谢拉尔夫

nanomsg-1.0.0已经支持iovnn_sendmsg

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