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



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

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

CentOS将发送一个Req-请求,"Windows"将对其进行Rep响应

看起来不错。

但我所响应的数据片段混合了几个结构。后面跟着几个数据帧的数据头。

我想把它们一个一个地寄出去。

但根据nanomsg,Req/Rep应该只发送一个请求,然后一次接收一个响应。仅此而已。

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

我能做的就是做一个大的缓冲区,把头部和数据帧粘在一起,然后把它们一起发送。

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

谢谢!

像谷歌协议缓冲区这样的东西将是您的朋友。

nanomsg发送完整的消息。这只是一个"消息"是什么的问题。从本质上讲,它只是一组保证传递的字节。这些字节实际代表的内容由您决定。

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

好的一面是,您不必担心端序、不同编译器中的结构打包等问题,也不必担心另一端使用的编程语言,或者不序列化形式的消息在内存中是否连续。

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

最新更新