首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >libuv -如何使用二进制协议

libuv -如何使用二进制协议
EN

Stack Overflow用户
提问于 2013-04-18 11:43:00
回答 1查看 1.3K关注 0票数 0

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

代码语言:javascript
复制
struct header {
    int32_t message_type;
    int32_t message_id;
    int32_t data_size;
};

数据流:

标题/数据/头/头

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

EN

回答 1

Stack Overflow用户

发布于 2013-04-19 06:40:55

libuv使用asyn事件通知调用uv_read_start后到达的新数据。因此,您可以从回调函数中的客户端获取二进制数据块,类似于void data_callback(uv_stream_t *, size_t, uv_buf_t)

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

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16082005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档