尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

Asio19-CoroutineServer

Asio19-CoroutineServer
📅 发布时间:2026/6/18 18:08:50

Asio19-CoroutineServer

书接上节,我们要利用协程重构之前的服务器代码.

实际上改动并不大,对于写而言,比较简单,即使回调也比较少,没有改用协程.我们主要在读的时候使用了协程.

void Session::Start()
{boost::asio::co_spawn(_io_context, [self = shared_from_this(), this]() -> boost::asio::awaitable<void> {for(;!_close;){_recv_head_node->Clear();// 读co_await boost::asio::async_read(_socket,boost::asio::buffer(_recv_head_node->_data,HEADER_LENGTH),boost::asio::use_awaitable);// iduint16_t msg_id;std::memcpy(&msg_id,_recv_head_node->_data,HEADER_ID_LENGTH);msg_id = ntohs(msg_id);// lenuint16_t data_len;std::memcpy(&data_len,_recv_head_node->_data+HEADER_ID_LENGTH,HEADER_DATA_LENGTH);data_len = ntohs(data_len);if(data_len > MAX_LENGTH){Close();co_return;}// std::cout << "Id:"<<msg_id<<"\tlen:" << data_len <<":\n";// msg_recv_msg_node = std::make_shared<RecvNode>(data_len,msg_id);int n = co_await boost::asio::async_read(_socket,boost::asio::buffer(_recv_msg_node->_data,data_len),boost::asio::use_awaitable);_recv_msg_node->_data[_recv_msg_node->_max_len] = '\0';// std::cout << _recv_msg_node->_data << "\n";if(n == 0){std::cout << "Connection closed by peer\n";Close();co_return;}LogicSystem::GetInstance().PostToLogicQueue(std::make_shared<LogicNode>(shared_from_this(),_recv_msg_node));} }, boost::asio::detached);
}

从这里也能看出来,使用协程将原本需要拆分成解析头部,消息体的回调直接以线性的方式编写,更加的简单便捷.

相关新闻

  • 内存管理概念
  • 2025.12.25博客
  • 学长亲荐10个AI论文软件,助你搞定本科生毕业论文!

最新新闻

  • 多维聚合实战:从pandas滚动窗口到业务可解释指标
  • 北京公司注册代办怎么选?2026年合规标准、避坑指南与机构对比盘点 - 互联网科技品牌测评
  • 杭州黄金回收红黑榜 2026 版:避坑黑名单 + 高保值优选门店,上门 / 到店渠道全面对比 - 奢侈品回收评测
  • 风电预测模型可解释性实战:物理约束下的SHAP与LIME应用
  • 口语化买家问句转化 SEO 页面,同步适配传统排名与 AI 摘要引用
  • AI落地失败真相:工作流分层与程序可表达性实战指南

日新闻

  • 2026年不锈钢卷板厂家推荐排行榜:冷轧热轧/304/201不锈钢卷板,高颜值耐腐蚀源头厂家实力精选 - 企业推荐官【官方】
  • FLUX.1-dev FP8模型实战指南:24GB以下显卡高效部署方案
  • 2026佛山长途搬家价目表:跨省跨市搬家费用完整计算指南 - 从来都是英雄出少年

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号