0

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

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

CentOS 会发送一个Req-request,而“Windows”会用一个响应Rep它。

看起来不错。

但我回应的数据片段混合了几个结构。一个数据头跟随几个数据帧。

我想一一发给他们。

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

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

我能做的是做一个大缓冲区,将头部和数据帧粘合起来,然后一起发送。

有没有办法一个一个发送而不是一起发送?

谢谢!

4

1 回答 1

0

像 Google Protocol Buffers 这样的东西会是你的朋友。

nanomsg 发送完整的消息。那么这只是一个“消息”是什么的问题。本质上,它只是它保证交付的一组字节。这些字节实际代表什么取决于您。

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

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

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

于 2017-01-28T08:48:25.107 回答