四、Beast中的network
由于http、websocket仅涉及tcp,因此在beast范围内,也仅涉及tcp协议,Beast的网络操作基于Asio,但Beast的一个目标似乎是做一个完整的系统(猜测),因此beast将涉及到的网络数据操作都“重写”的一遍(一些是简单包装,一些是扩展),例如Asio空间被重新命名为net,对std:bind也扩展为bind_handler和bind_front_handler。
beast设计了两套stream,一是用于http的tcp_stream,另一个是用于websocket的stream,它们之间没有直接关系。
tcp_stream的相关定义如下:
template< class Protocol, class Executor = net::executor,class RatePolicy = unlimited_rate_policy>
class basic_stream
using tcp_stream = basic_stream< net::ip::tcp, net::executor, unlimited_rate_policy >;
从实现上看,beast并没有利用asio中的streambuf,而是采用其中的概念,与buffer类结合,重新写了一大套接收/发送操作,与Asio中类似。
&nb

本文详细解析了Boost Beast库中的网络操作,包括基于Asio的tcp_stream和websocket::stream,以及特有的bind_handler和bind_front_handler。此外,还探讨了Beast的超时管理功能。Beast在设计上注重网络分层和协议解析,但其复杂性增加了学习成本,适合对模板特性和协议解析有深入理解的开发者。
&spm=1001.2101.3001.5002&articleId=106780832&d=1&t=3&u=41f4337539084e59ad56da4210a18f24)

被折叠的 条评论
为什么被折叠?



