我是C++的新手,我正在学习如何使用boost::asio进行网络编程来处理传入的二进制数据。我来自嵌入式C,在这里我会用固定的缓冲区读取从网络套接字接收到的比特和字节来编写打包器和解包器。
我想学习关于碘酒的知识。要从boost::asio中的网络套接字读取二进制数据,我正在使用streambuf。
是否有可能开发一个从流中读取数据类型并使用它们的iostream?
从std::basic_streambuf获得子类的正确方法是什么?然后使用我的数据类型从流中使用数据。我不需要定义固定大小的缓冲区来执行读取。
我不太清楚该怎么做。能不能找个合适的例子来说明我需要做什么。
我这样做主要是为了提高我的C++技能。
谢谢
登沙
发布于 2018-01-21 21:24:24
不要子类asio::streambuf。
相反,可以使用可流类型或例如Boost序列化归档(boost::archive::text_oarchive和boost::archive::text_iarchive)或somesuch。这是相当高的级别,允许您序列化完整的对象图,包括多态类型和(循环)关系。
遗憾的是,Boost Serialization不能提供一个简单的框架协议,所以您的协议应该希望为每条消息建立新的连接,或者在其之上添加一个框架协议。
有很多样本。从这里开始,也许:
PS。注意其他选择
boost::asio::buffer的方法要简单得多https://stackoverflow.com/questions/48365608
复制相似问题