使用标准对数据包流进行适当实现
Appropriate implementation of packet stream using standards
我正在编写以离散数据包形式通信的串行设备的驱动程序。我还希望用户能够从串行流量的转储文件中解释数据包。我计划将来写其他类似的驱动程序。
浏览了可用的库和标准后,我正在考虑实现std :: codecvt(iostream使用)将其转换为宽字符,以提供一种在字节流和数据包对象流之间转换的方法和处理ASIO,使得串行端口可以是标准的字节流。
这似乎是我最优雅的方法,是对标准的最大用途,但我担心这是对编解码器的滥用。读取CODECVT的文档,显然是要仅转换字符编码。但是看来它可以与更高级别的数据包对象一起工作。
使用熟悉的插入和提取操作员来处理更高级别的数据,这是诱人的,此方法意味着需要最小的样板代码来实现这一目标。
这个想法是对编解码器的滥用吗?您有经验的意见中的"正确"或"最佳"解决方案是什么?
我们将ASIO和BOOST配对。
我们经常使用它,以至于我们将该概念提取到可以使用Qi/Karma语法的通用数据包库中,并且可以与async_read_some
一起使用的ASIO类型。
我们将其用于串行端口,TCP/IP套接字和自定义IO。
相关文章:
- 根据C++标准的定义实现"is_similar"类型特征
- C++标准是否允许<double>在没有开销的情况下实现 std::可选
- 任何用于 boost::p roperty 树的标准库实现
- 如果不包含 pthread,为什么 GCC 的线程标准库实现会抛出异常?
- 如何知道用于实现标准代码段的确切数据结构和算法,例如在C++STL中?
- 是否可以仅使用标准 c++/c++11 实现不带"sleep"的计时器?
- 在 C++11 标准中,为什么要依赖 char 类型实现?
- 是否可以在C++标准库中实现always_false
- 如何(以及谁可以)实现C++委员会定义的标准库功能
- 是否可以在标准弱指针之上实现非拥有"slightly smart"指针?
- 标准库头文件函数原型的实现是如何用 c++ 编写的?
- 为什么标准库不以无锁的方式为 8 字节以下的结构实现 std::atomic?
- GCC 如何实现 C++ 标准分配器
- clang实现char8_t的方式是否存在缺陷,或者标准的某个黑暗角落是否禁止优化?
- 是否使用符合标准的线程池进行 std::async 的 Visual C++ 实现
- 以C 标准的方式实现STD :: Malloc
- 标准库中 std::d isjunction 的实现
- 是否有一个包含std::unique_ptr的c++标准库实现可以与visualstudio2008一起使用
- 如何在课堂上实现标准迭代器
- 在C中实现C++标准11的std::move函数