【Muduo复现笔记】 PingPong测试程序

pingpong_server

void onConnection(const TcpConnectionPtr& conn)

将新连接connfd设置为TCP_NODELAY属性。

作用:TCP/IP协议默认开启了Nagle算法,该算法通过减少需要传输的数据包来优化网络。在内核实现中,数据包的发送和接收会先做缓存,分别对应于写缓存和读缓存。

对于关闭TCP_NODELAY,则是应用了Nagle算法。数据只有在写缓存中累积到一定量之后,才会被发送出去,这样明显提高了网络利用率(实际传输数据payload与协议头的比例大大提高)。但是这又不可避免地增加了延时;与TCP delayed ack这个特性结合,这个问题会更加显著,延时基本在40ms左右。当然这个问题只有在连续进行两次写操作的时候,才会暴露出来。

void onMessage(const TcpConnectionPtr& conn, Buffer buf, Timestamp)*

收到了数据,直接将数据发送。

int main(int argc, char argv[])*

设置Logger::setLogLevel(Logger::WARN);

只有日志级别大于WARN的才会被输出。

EventLoop loop; 初始化单线程的loop

TcpServer server(&loop, listenAddr, “PingPong”); 初始化服务器,默认单线程

server.setConnectionCallback(onConnection);

server.setMessageCallback(onMessage);设置回调函数

server.start();

loop.loop();启动

pingpong_client

single_thread.sh

timeout = -100 :应该是程序运行多久

bufsize: 每次读取多少字节

nothreads:表示是单线程程序

taskset -c 1 ./pingpong_server 0.0.0.0 55555 $nothreads $bufsize & srvpid=$!

taskset 命令可将某个进程与某个CPU核心绑定,使得其仅在与之绑定的CPU核心上运行。

【Muduo复现笔记】 PingPong测试程序相关推荐

  1. Attentional Factorization Machine(AFM)复现笔记

    声明:本模型复现笔记记录自己学习过程,如果有错误请各位老师批评指正. 之前学习了很多关于特征交叉的模型比如Wide&Deep.Deep&Cross.DeepFM.NFM. 对于特征工程 ...

  2. WideDeep Model、Wide Model(LR)、Deep Model、DeepFm Model、NFM Model复现笔记

    声明:本模型复现笔记记录自己学习过程,如果有错误请各位老师批评指正. 本周复现了Wide&Deep Model.Wide Model.Deep Model.DeepFm Model.NFM M ...

  3. muduo学习笔记:net部分之Http--HttpServer

    前面[muduo学习笔记:net部分之Http–HttpRequest.HttpResponse 和 HttpContext]介绍了TCP数据数据Buffer承载的HTTP报文的解析,本文结合TcpS ...

  4. PaddleDetection复现笔记

    PaddleDetection复现笔记 (1) PP-Tracking_GUi step1:准备环境 step2:准备模型 step3:运行 (2) PP-Tracking step1:准备环境 st ...

  5. 禅道linux一键安装漏洞,禅道全版本rce漏洞复现笔记

    禅道全版本rce漏洞复现笔记 漏洞说明 禅道项目管理软件是一款国产的,基于LGPL协议,开源免费的项目管理软件,它集产品管理.项目管理.测试管理于一体,同时还包含了事务管理.组织管理等诸多功能,是中小 ...

  6. Trackformer复现笔记

    Trackformer复现笔记 前言 因毕设需要进行一下记录 一.python版本 建议使用python 3.7.1,源代码是基于python 3.7进行编写 二.pip 1.lap依赖 这个依赖需要 ...

  7. muduo网络库源码复现笔记(十七):什么都不做的EventLoop

    Muduo网络库简介 muduo 是一个基于 Reactor 模式的现代 C++ 网络库,作者陈硕.它采用非阻塞 IO 模型,基于事件驱动和回调,原生支持多核多线程,适合编写 Linux 服务端多线程 ...

  8. muduo学习笔记 线程类

    learn_muduo 线程属性 线程标识 pthreadId_,pid_t 线程函数 func_ 线程名字 name_ 线程序号 numCreated_ bool started_; // 线程状态 ...

  9. 【论文复现】使用PaddleDetection复现OrientedRepPoints的复现笔记

    1 复现流程 复现流程表: 翻译原始论文: 学习PaddleDetection配置参数 对齐Dataloader: 2 MMRotate代码 2.1 配置mmrotate环境 官方安装文档:INSTA ...

最新文章

  1. 世界级Linux技术大师首次公开大量技术内幕
  2. shell高级编程--引用
  3. Java黑皮书课后题第5章:*5.43(数学:组合)编写程序,显示从整数1到7中选择两个数字的所有组合,同时显示所有组合的总个数
  4. 常见索引结构—二叉搜索树
  5. 欧拉函数(简单介绍+例题)
  6. PyCharm设置自动换行
  7. python中缩进在程序中_有没有办法将Python代码中的缩进转换为大括号?
  8. java.lang.NumberFormatException: null
  9. php radio js,如何使用JavaScript设置radio选中的示例
  10. PostgreSQL 12系统表(5)pg_index
  11. 2.lvm动态逻辑卷
  12. 校园网自动登录(校园翼行网)
  13. python怎么算二元一次方程_教你用python解析二元一次方程
  14. 这些JAVA毕业设计拿走不谢
  15. 千钧一发之际赢得暂缓令,苹果App Store要反败为胜了?
  16. Scrapy项目(东莞阳光网)---利用CrawlSpider爬取贴子内容,不含图片
  17. 糟糕之至的用户体验——JavaEye你怎么就这么贱!
  18. 用友t3服务器系统管理软件,T3用友通系统管理常见问题及解决方案
  19. 参加华为HCIP的培训班吗?
  20. 2020诺贝尔文学奖得主,死亡的诗歌

热门文章

  1. 转子接地保护原理_浅析发电机注入式转子接地保护原理.doc
  2. 微信授权登陆界面无法再次弹出,无法用户切换
  3. studio 设置小尾巴 恩 在头上严格来说不是小尾巴
  4. Flutter 倒计时功能
  5. python sklearn机器学习库 安装
  6. -ee -er_EE协作登录系统-设计注意事项
  7. 300亿港元市值背后海伦司的铠甲和软肋
  8. 面试阿里P6,过关斩将直通2面,结果3面找了个架构师来吊打我?
  9. opnet之加强mm1模型之删除事件
  10. oracle数据库提交数据关键字,Oracle数据库的关键字