恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

moduo之服务器TcpServer

  • 首页
  • 资讯中心
  • /
  • moduo之服务器TcpServer

相关资讯

基于STM32与多传感器融合的水质监测系统设计与实现 2026/9/4 12:43:00
AI工作流下电路设计数据防泄露:定级、限权与追踪链路 2026/9/4 12:43:00
用10分钟语音数据训练AI变声模型:RVC完整上手指南 2026/9/4 12:38:00

最新资讯

论文降重与文本改写服务避坑指南:识别风险、核对修改稿与建立自我掌控流程
配置错误导致AI Agent越权:Anthropic 7·30事件分析与安全加固
水风光互补调度与净现值耦合分析实战
AI系统鲁棒性实战:如何应对OOD样本与对抗性攻击导致的模型失效
如何快速上手KOReader:多格式电子书阅读指南
旋转等变性:让CNN从结构上应对任意角度的几何变换

今日推荐

爬虫防护实操:出海网站拦截恶意采集、垃圾爬虫、无效刷量,CDN 精准防护落地指南
STM32H743 SPI从机DMA双缓冲通信实战
CPU开盖降温教程:20元成本让温度直降30度的原理与实践

本周热门

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析
数字电路时序基石:深入理解建立时间与保持时间
蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

本月精选

自研推理加速器Redwood:两周内实现PyTorch模型高效部署的实战教程
V4L2摄像头采集实战:从camera_client.rar到出图全流程解析
从“谁发明了钢琴键”到知识问答智能体:RAG与记忆工程实践

moduo之服务器TcpServer

发布时间:2026/9/4 12:43:00
moduo之服务器TcpServer 简介TcpServer实现了多线程主从Reactor服务器结构TcpServerAcceptorTcpConnectionEventLoopThreadPoolTcpServer相关的回调连接建立回调ConnectionCallback connectionCallback_连接上数据到来时的回调MessageCallback messageCallback_连接上写完成回调WriteCompleteCallback writeCompleteCallback_typedefstd::functionvoid(constTcpConnectionPtr)ConnectionCallback;typedefstd::functionvoid(constTcpConnectionPtr)WriteCompleteCallback;typedefstd::functionvoid(constTcpConnectionPtr,Buffer*,Timestamp)MessageCallback;Acceptor新连接回调voidnewConnection(intsockfd,constInetAddresspeerAddr);TcpConnection的四个回调voidsetConnectionCallback(constConnectionCallbackcb){connectionCallback_cb;}/// Set message callback./// Not thread safe.voidsetMessageCallback(constMessageCallbackcb){messageCallback_cb;}/// Set write complete callback./// Not thread safe.voidsetWriteCompleteCallback(constWriteCompleteCallbackcb){writeCompleteCallback_cb;}voidremoveConnection(constTcpConnectionPtrconn);事件循环线程池线程启动初始回调voidsetThreadInitCallback(constThreadInitCallbackcb){threadInitCallback_cb;}Acceptor连接回调从事件循环池中轮循方式选取一个创建TcpConnection将TcpServer设置的connectionCallback_,messageCallback_和writeCompleteCallback_传递到TcpConnection同时设置关闭连接的回调removeConnection创建连接建立的任务connectEstablished放入连接事件循环的队列中异步执行voidTcpServer::newConnection(intsockfd,constInetAddresspeerAddr){loop_-assertInLoopThread();EventLoop*ioLoopthreadPool_-getNextLoop();charbuf[64];snprintf(buf,sizeofbuf,-%s#%d,ipPort_.c_str(),nextConnId_);nextConnId_;string connNamename_buf;LOG_INFOTcpServer::newConnection [name_] - new connection [connName] from peerAddr.toIpPort();InetAddresslocalAddr(sockets::getLocalAddr(sockfd));// FIXME poll with zero timeout to double confirm the new connection// FIXME use make_shared if necessaryTcpConnectionPtrconn(newTcpConnection(ioLoop,connName,sockfd,localAddr,peerAddr));connections_[connName]conn;conn-setConnectionCallback(connectionCallback_);conn-setMessageCallback(messageCallback_);conn-setWriteCompleteCallback(writeCompleteCallback_);conn-setCloseCallback(std::bind(TcpServer::removeConnection,this,_1));// FIXME: unsafeioLoop-runInLoop(std::bind(TcpConnection::connectEstablished,conn));}连接建立回调connectEstablished设置连接状态为kConnected事件通道绑定连接对象开启读事件执行事件回调connectionCallback_voidTcpConnection::connectEstablished(){loop_-assertInLoopThread();assert(state_kConnecting);setState(kConnected);channel_-tie(shared_from_this());channel_-enableReading();connectionCallback_(shared_from_this());}关闭连接回调添加任务removeConnectionInLoop到acceptor所在的事件循环队列中异步执行连接容器中删除对应连接添加任务connectDestroyed到连接所在的事件循环队列中异步执行voidTcpServer::removeConnection(constTcpConnectionPtrconn){// FIXME: unsafeloop_-runInLoop(std::bind(TcpServer::removeConnectionInLoop,this,conn));}voidTcpServer::removeConnectionInLoop(constTcpConnectionPtrconn){loop_-assertInLoopThread();LOG_INFOTcpServer::removeConnectionInLoop [name_] - connection conn-name();size_t nconnections_.erase(conn-name());(void)n;assert(n1);EventLoop*ioLoopconn-getLoop();ioLoop-queueInLoop(std::bind(TcpConnection::connectDestroyed,conn));}

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号