网络编程学习

注意的指标
MB/S 带宽
每秒处理的信息 查询等 messages/s queries/s transaction/s
延时
cpu使用率

ttcp测试网络 读写读写 循环 测试网络带宽

正确关闭TCP shutdown_write read->0 closesocket

TCP_NODELAY 延时发送小数据包 认为设置 不等待 即时发送 开启

reuseaddr socket复用

完整代码见

https://git.oschina.net/def/cppPratice/tree/master/MyTtcpV0.1

#include "RecvMessageLoop.h"#include <boost/asio.hpp>#include <iostream>#include <chrono>#include "Common.h"using boost::asio::ip::tcp;void RecvMessageLoop(const std::string& ipStr,const std::string& portStr, const std::string& MessageBlockLen) {//std::cout << "RecvMessageLoop" << std::endl;boost::asio::io_service io_service;tcp::acceptor acceptor(io_service, tcp::endpoint(tcp::v4(), std::atoi(portStr.c_str())));tcp::socket socket(io_service);acceptor.accept(socket);//SetSocketNoDelay(socket,true);boost::system::error_code ec;long recvBlocklen = 0;size_t len = socket.read_some(boost::asio::buffer(&recvBlocklen,sizeof(recvBlocklen)), ec);if (len != sizeof(recvBlocklen) || ec) {PRINTERRORCODE(ec);return;}std::cout << "recvlen is: " << recvBlocklen << std::endl;int testLoopTimes = defaultSendLength / recvBlocklen;len = boost::asio::write(socket,boost::asio::buffer(&testLoopTimes, sizeof(testLoopTimes)), ec);if (len != sizeof(testLoopTimes) || ec) {PRINTERRORCODE(ec);return;}std::unique_ptr<char[]> testBuf(new char[recvBlocklen]);//okfor (int i = 0; i < recvBlocklen; ++i){testBuf[i] = '\0';}auto start = std::chrono::steady_clock::now();while(1) {len = boost::asio::read(socket,boost::asio::buffer(testBuf.get(), recvBlocklen),ec);if (ec == boost::asio::error::eof) {break;}else if (len != recvBlocklen || ec) {PRINTERRORCODE(ec);return;}//std::cout << "read success" << std::endl;int i = len;len = boost::asio::write(socket, boost::asio::buffer(&i, sizeof(i)), ec);if (len != sizeof(i) || ec) {PRINTERRORCODE(ec);return;}//std::cout << "write success" << std::endl;}//socket.shutdown(boost::asio::socket_base::shutdown_send);//len = boost::asio::read(socket,//   boost::asio::buffer(&len, sizeof(len)), ec);//socket.close();auto end = std::chrono::steady_clock::now();std::chrono::duration<double> diff = end - start;std::cout << "=>Time Elapse " << diff.count() << " s" << std::endl;std::cout << "Total Length is  " << defaultSendLength / 1024 / 1024 << "MB" << std::endl;std::cout << "Speed is " << defaultSendLength / 1024 / 1024/ diff.count() << "MB" << std::endl;
}

  

转载于:https://www.cnblogs.com/itdef/p/6219170.html

MyTtcp 测试网络带宽相关推荐

  1. linux speedtest-cli工具测试网络带宽、测试网速(下载速度、上传速度和延迟等信息)

    speedtest-cli是一个命令行工具,用于测试网络的带宽.它可以在Linux.macOS和Windows等操作系统上运行.下面是使用speedtest-cli测试网络带宽的步骤: 安装speed ...

  2. 怎么测试网络带宽_性能测试案例与经验分享

    性能基准测试 性能基准测试,通常被称为 Performance Benchmark Test,是每次对外发布产品版本前必须要完成的测试类型. 性能基准测试,会基于固定的硬件环境和部署架构(比如专用的服 ...

  3. 怎么测试linux主机能否上网,Linux怎么测试网络带宽之speedtest

    1. 前言 本文主要介绍Linux怎么测试互联网带宽速度,在以下教程中,我们将重点介绍speedtest这个测试工具. 2. speedtest功能介绍 Speedtest用于测试连接互联网速度.Sp ...

  4. linux中测试带宽的命令,【linux】测试网络带宽

    利用bmon/nload/iftop/vnstat/iptraf实时查看网络带宽状况 一.添加yum源方便安装bmon # rpm -Uhv http://apt.sw.be/redhat/el5/e ...

  5. linux测试网络带宽极限,iperf 测试极限带宽

    iperf 版本建议采用linux,事实上,windows版也很好用. 带宽测试通常采用UDP模式,因为能测出极限带宽.时延抖动.丢包率.在进行测试时,首先以链路理论带宽作为数据发送速率进行测试,例如 ...

  6. iperf测试网络带宽

    iperf是一个网络性能测试工具.可以测试TCP和UDP带宽质量,可以测量最大TCP带宽,具有多种参数和UDP特性,可以报告带宽,延迟抖动和数据包丢失.Iperf在linux和windows平台均有二 ...

  7. qperf测试网络带宽(linux离线安装+测试教程)

    环境: CentOS 6.4     (查看系统版本命令: lsb_release -a) 1.下载qperf 官方下载地址: https://pkgs.org/download/qperf 不建议下 ...

  8. 学习C++项目—— 搭建多线程网络服务框架,性能测试(并发性能测试,业务性能测试,客户端响应时间测试,网络带宽测试)

    学习计算机网络编程 一.思路和学习方法   本文学习于:C语言技术网(www.freecplus.net),在 b 站学习于 C 语言技术网,并加以自己的一些理解和复现,如有侵权会删除.   接下来对 ...

  9. 利用iperf网络带宽测试工具看多线程及多核编程

    导言 不少人,在编程的时间迷信于多线程能够提高效率,但很少有人去摸清楚背后的量化模型? 让快有快的理由,慢有慢的道理,在逻辑上有比较严密的证明过程! 我们知道,iperf工具可以测定主机间的网络带宽. ...

最新文章

  1. JavaScript系列-(原型-原型连-call-apply-继承)
  2. 经典shell面试题整理
  3. 银河计算机网络,Python脚本之socket
  4. 07-CA/TA编程:rsakey demo
  5. leetcode 978. Longest Turbulent Subarray | 978. 最长湍流子数组(Java)
  6. ProgressBar控件在Listview下的多线程应用(转自johngeng)
  7. 使用Hibernate 4,JPA和Maven的架构创建脚本
  8. LeetCode 1980. 找出不同的二进制字符串
  9. 编码是件有逻辑的事情
  10. Source InSight context 窗口丢失的解决办法
  11. Linux内核编程打印所有线程信息
  12. Python3中的GBK、UTF-8和Unicode
  13. Attack State Slight Movement(攻击状态)
  14. Kaggle Tweet Sentiment Extraction竞赛
  15. 案例分析 | 优衣库DTC模式之全渠道零售
  16. Pwnable之passcode
  17. UE4 渲染半透明物体进深度剔除(复制物体)
  18. 【wechat】微信开发——自定义菜单
  19. 荣耀7c升鸿蒙,荣耀也能升级!鸿蒙所需配置曝光:麒麟710起步
  20. VHDL设计一个同步清零的JK触发器

热门文章

  1. 双11海尔冰箱·冷柜:全网销额再创纪录居行业第一
  2. 【WLAN从入门到精通-基础篇】第7期——AP上线过程
  3. Mac上使用Royal TSX链接服务器
  4. linux安装oracle11g详解(centOS7)
  5. 广西农业大数据在管用上做文章
  6. 使用Rythm插件轻松实现JFinal应用的国际化
  7. 腾讯云数据库的可信可控之路
  8. esp-idf安装过程中遇到的一些问题
  9. 欢迎使用CSDN-markdown编辑器推荐一个好用的论文助手工具,不仅可以免费论文查重,还可以规范参考文献和一键规范论文格式,方便好用还免费。地址:www.bigan.net
  10. 浙江浙大中控信息——java开发面经