在执行nn_send之后,nn_socket将禁止在Req / Rep模式下立即发送下一条数据

时间:2017-01-14 07:06:29

标签: c zeromq nanomsg

我正在使用nanomsg将我的数据从Windows传输到CentOS。

目前,我正在使用 Req/Rep 模式。

CentOS会发送Req - 请求,“Windows”会以Rep回复。

看起来没问题。

但我回复的数据混合了几个结构。数据头跟随多个数据帧。

我想逐个发送它们。

但根据nanomsg, Req/Rep 应该只发送一个请求,并一次收到一个响应。就是这样。

因此,如果我发送头部, nn_socket 将禁止我发送数据框。

我能做的是制作一个大缓冲区,并固定头部和数据框,然后将它们一起发送。

有没有办法一个接一个地发送它们而不是一起发送?

谢谢!

1 个答案:

答案 0 :(得分:0)

Google Protocol Buffers之类的东西将成为你的朋友。

nanomsg发送完整的消息。它只是一个"消息"的问题。是。从本质上讲,它只是一组字节,它保证提供。它取决于那些字节实际代表的内容。

这是Google协议缓冲区(或JSON,或XML,或ASN.1 [我个人最喜欢的],还有许多其他人可供选择)。它允许您定义满足的消息结构您的需求,然后生成序列化和反序列化这些消息的代码。您编写代码以序列化/反序列化为缓冲区(字节数组,字符串,等等),您使用nanomsg将其作为消息传递。

好消息是,您不必担心字节顺序,不同编译器中的结构包装等,或者在另一端使用什么编程语言,或者反序列化形式的消息是否为在记忆中连续。

我提到GPB是因为它是免费的,相当简单