我正在使用nanomsg将我的数据从Windows传输到CentOS。
目前,我正在使用 Req/Rep
模式。
CentOS会发送Req
- 请求,“Windows”会以Rep
回复。
看起来没问题。
但我回复的数据混合了几个结构。数据头跟随多个数据帧。
我想逐个发送它们。
但根据nanomsg, Req/Rep
应该只发送一个请求,并一次收到一个响应。就是这样。
因此,如果我发送头部, nn_socket
将禁止我发送数据框。
我能做的是制作一个大缓冲区,并固定头部和数据框,然后将它们一起发送。
有没有办法一个接一个地发送它们而不是一起发送?
谢谢!
答案 0 :(得分:0)
Google Protocol Buffers之类的东西将成为你的朋友。
nanomsg发送完整的消息。它只是一个"消息"的问题。是。从本质上讲,它只是一组字节,它保证提供。它取决于那些字节实际代表的内容。
这是Google协议缓冲区(或JSON,或XML,或ASN.1 [我个人最喜欢的],还有许多其他人可供选择)。它允许您定义满足的消息结构您的需求,然后生成序列化和反序列化这些消息的代码。您编写代码以序列化/反序列化为缓冲区(字节数组,字符串,等等),您使用nanomsg将其作为消息传递。
好消息是,您不必担心字节顺序,不同编译器中的结构包装等,或者在另一端使用什么编程语言,或者反序列化形式的消息是否为在记忆中连续。
我提到GPB是因为它是免费的,相当简单