gpt4 book ai didi

c++ - 使用标准适当实现数据包流

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

我正在为以离散数据包形式通信的串行设备编写驱动程序。我还希望用户能够从串行流量的转储文件中解释数据包。我计划在未来编写其他类似的驱动程序。

在查看了可用的库和标准之后,我正在考虑实现 std::codecvt,iostream 使用它来转换为宽字符,以提供一种在字节流和数据包对象流之间进行转换的方法,并处理 asio,使串行端口可能是标准的字节流。

这对我来说似乎是最优雅的方法,它充分利用了标准,但我担心这是对 codecvt 的误用。阅读 codecvt 的文档,它显然只用于转换字符编码。但它似乎适用于更高级别的数据包对象。

使用熟悉的插入和提取运算符来处理更高级别的数据是很有吸引力的,这种方法意味着只需最少的样板代码即可实现。

这个想法是对codecvt的误用吗?根据您的经验,这里的“正确”或“最佳”解决方案是什么?

最佳答案

我们将 Asio 和 Boost.Spirit 配对,将字节流转换为数据类型,并将数据类型转换为字节流。

我们经常使用它,以至于我们已经将这个概念抽象到一个通用的 packetizer 库中,该库可以采用 Qi/Karma 语法和可以与 async_read_some 一起使用的 Asio 类型。

我们将其用于串行端口、TCP/IP 套接字和自定义 IO。

关于c++ - 使用标准适当实现数据包流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40878480/

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