用途:在编写或审查异步 C++ 网络代码时使用,尤其是目标工具链较旧、协程示例无法编译的场景。覆盖 TCP/UDP 服务端与客户端、SSL/TLS、定时器、strand 等。
主要能力:先确定实际使用的 Boost/Asio 版本与 C++ 标准(如 find_package(Boost)、dpkg -l libboost-dev、brew info boost、CMAKE_CXX_STANDARD),再选择风格:Boost ≥1.77 且 C++20 用协程(co_await + awaitable<T>);≥1.74 且 C++11–17 用回调;≥1.80 且 C++11–17 可用 asio::spawn + yield_context;1.62–1.65 用经典 io_service。SSL/TLS 与 CMake 另有参考文件。
版本下限:awaitable_operators.hpp 需 Boost ≥1.77;as_tuple 需 ≥1.79;co_composed 需 ≥1.85;3 参 spawn 需 ≥1.80;any_io_executor 需 ≥1.74;io_context/make_strand/expires_after 需 ≥1.66。chrono 字面量 250ms 属 C++14。
关键规则:strand 只序列化处理函数执行,不序列化写操作,全双工需每连接 strand 加带 in-flight 标志的出站队列;asio::buffer 不拥有内存,存储须比操作存活更久;连接须比处理函数存活更久,用 enable_shared_from_this 并捕获 self;分帧用组合式 async_read;用 as_tuple(use_awaitable);async_accept(make_strand(...)) 会改变完成令牌与套接字类型;重新武装定时器会以 operation_aborted 结束等待;GCC 需 -fcoroutines,header-only Boost 需在一处定义 BOOST_ERROR_CODE_HEADER_ONLY。
限制:资料未提供收费、价格与平台信息;具体实现需以实际编译验证为准。