使用标准对数据包流进行适当实现

Appropriate implementation of packet stream using standards

本文关键字:实现 标准 数据包      更新时间:2023-10-16

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

浏览了可用的库和标准后,我正在考虑实现std :: codecvt(iostream使用)将其转换为宽字符,以提供一种在字节流和数据包对象流之间转换的方法和处理ASIO,使得串行端口可以是标准的字节流。

这似乎是我最优雅的方法,是对标准的最大用途,但我担心这是对编解码器的滥用。读取CODECVT的文档,显然是要仅转换字符编码。但是看来它可以与更高级别的数据包对象一起工作。

使用熟悉的插入和提取操作员来处理更高级别的数据,这是诱人的,此方法意味着需要最小的样板代码来实现这一目标。

这个想法是对编解码器的滥用吗?您有经验的意见中的"正确"或"最佳"解决方案是什么?

我们将ASIO和BOOST配对。

我们经常使用它,以至于我们将该概念提取到可以使用Qi/Karma语法的通用数据包库中,并且可以与async_read_some一起使用的ASIO类型。

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