我使用zeromq已经有一段时间了,并且广泛使用多部分消息。在C++中,我使用zmq_sendiov/zmq_recviov发送/recv多部分消息。好处是我可以将每个消息“帧”放在一个iovec中,并使用调用一次发送/recv。
最近我决定尝试一下,我发现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可以自由地重新组装缓冲区?
谢谢拉尔夫
发布于 2017-01-14 08:59:23
nanomsg-1.0.0已经支持iov 发信
发布于 2015-09-30 15:56:43
目前在有关这方面的文档中没有说明什么,但我确信nanomsg确保接收到的iovec的结构与发送的结构相同,因为存在一个单元测试(请参阅https://github.com/nanomsg/nanomsg/blob/fb5670c952c53834c5c7c989eace7c6bd54bd4c5/tests/iovec.c),这证实了我的假设。
https://stackoverflow.com/questions/32815416
复制相似问题