【问题标题】:libuv - How to use binary protocollibuv - 如何使用二进制协议
【发布时间】:2013-04-18 11:43:00
【问题描述】:

当通过简单的二进制协议进行通信时,我有客户端-服务器应用程序。当四个字节是数据长度[datasize]和数据块大小的数据大小时,二进制协议有12个字节的头(见代码)。

struct header {
    int32_t message_type;
    int32_t message_id;
    int32_t data_size;
};

数据流:


标题 |数据 | 标题 |数据 |


如何通过 libuv 从客户端接收二进制数据?你知道libuv处理二进制数据协议的例子吗?

【问题讨论】:

    标签: c protocols binary-data libuv


    【解决方案1】:

    libuv 在您调用uv_read_start 后使用异步事件通知新数据到达。所以你可以在回调函数中从客户端获取二进制数据块,比如void data_callback(uv_stream_t *, size_t, uv_buf_t)

    接下来您需要做的就是将二进制数据块组合到高层协议。您可以为每个客户端设置一个状态机,为其提供数据块,然后在协议包完成后将包发送到更高层。

    我有一个与您类似的协议解析示例。它是一个基于libuv 的tcp 客户端。协议解析模块在这里:package.hpackage.c。希望对你有帮助。 :)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-16
      • 2012-01-21
      • 1970-01-01
      • 1970-01-01
      • 2023-04-11
      • 1970-01-01
      • 2010-09-17
      • 2011-02-01
      相关资源
      最近更新 更多