gpt4 book ai didi

c - libuv - 如何使用二进制协议(protocol)

转载 作者:太空宇宙 更新时间:2023-11-04 08:57:50 25 4
gpt4 key购买 nike

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

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

数据流:


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


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

最佳答案

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

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

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

关于c - libuv - 如何使用二进制协议(protocol),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16082005/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com