做完nn_send后,nn_socket会以Req/Rep的方式禁止立即发送下一条数据
After doing nn_send, the nn_socket will forbid to send the next piece of data immediately in a Req/Rep mode
我正在使用 nanomsg 将我的数据从 Windows 传输到 CentOS。
目前,我正在使用Req/Rep
模式。
CentOS 将发送一个 Req
请求,而 "Windows" 将以 Rep
响应它。
看起来不错。
但是我响应的数据是混合了几个结构的。一个数据头跟随几个数据帧。
我要一一发过去
但是根据 nanomsg,Req/Rep
应该只发送一个请求,然后一次接收一个响应。就这些了。
所以如果我发送头部,nn_socket
将禁止我发送数据帧。
我能做的就是弄个大buffer,把head和data frame粘在一起,一起发送。
有没有办法一个一个发送而不是一起发送?
谢谢!
类似 Google Protocol Buffers 的东西将成为您的朋友。
nanomsg 发送完整的消息。这只是 "message" 是什么的问题。本质上,它只是它保证传送的一组字节。这些字节实际代表什么取决于您。
这就是 Google Protocol Buffers(或 JSON,或 XML,或 ASN.1 [我个人的最爱],还有许多其他选择)的用武之地. 它允许您定义满足您需要的消息结构,然后生成序列化和反序列化这些消息的代码。您编写代码以序列化/反序列化到缓冲区(字节数组、字符串等),您使用 nanomsg 作为消息传递。
好处是您不必担心字节序、不同编译器中的结构打包等问题,或者另一端使用的是什么编程语言,或者反序列化形式的消息是否是在内存中是连续的。
我提到 GPB 是因为它是免费的,相当简单
我正在使用 nanomsg 将我的数据从 Windows 传输到 CentOS。
目前,我正在使用Req/Rep
模式。
CentOS 将发送一个 Req
请求,而 "Windows" 将以 Rep
响应它。
看起来不错。
但是我响应的数据是混合了几个结构的。一个数据头跟随几个数据帧。
我要一一发过去
但是根据 nanomsg,Req/Rep
应该只发送一个请求,然后一次接收一个响应。就这些了。
所以如果我发送头部,nn_socket
将禁止我发送数据帧。
我能做的就是弄个大buffer,把head和data frame粘在一起,一起发送。
有没有办法一个一个发送而不是一起发送?
谢谢!
类似 Google Protocol Buffers 的东西将成为您的朋友。
nanomsg 发送完整的消息。这只是 "message" 是什么的问题。本质上,它只是它保证传送的一组字节。这些字节实际代表什么取决于您。
这就是 Google Protocol Buffers(或 JSON,或 XML,或 ASN.1 [我个人的最爱],还有许多其他选择)的用武之地. 它允许您定义满足您需要的消息结构,然后生成序列化和反序列化这些消息的代码。您编写代码以序列化/反序列化到缓冲区(字节数组、字符串等),您使用 nanomsg 作为消息传递。
好处是您不必担心字节序、不同编译器中的结构打包等问题,或者另一端使用的是什么编程语言,或者反序列化形式的消息是否是在内存中是连续的。
我提到 GPB 是因为它是免费的,相当简单