ASIO网络调试助手之一:简介

多年前,写过几篇《Boost.Asio C++网络编程》的学习文章,一直没机会实践。最近项目中用到了Asio,于是抽空写了个网络调试助手。
开发环境:
Win10
Qt5.12.6 + Asio(standalone) + spdlog
支持协议:
UDP + TCP Client + TCP Server
独立的Asio(http://www.think-async.com)只包含了头文件,不依赖Boost,使用时只需定义ASIO_STANDALONE,并将Asio的目录添加到编译系统的include path。Asio现在支持C++11/14/17/20,源码里提供了各个C++版本的examples。
本调试助手界面参考了野人家园的《NetAssist网络调试助手》,这款调试助手功能非常丰富,很难全部实现,只仿了一些主要功能。《NetAssist网络调试助手》有个缺点:当接收数据量较大的时候,界面会卡主,导致消息无法发送成功。本调试助手优化了QPlainTextEdit的数据处理逻辑,支持海量数据的实时渲染,无此问题。

一.默认界面

从界面看出本调试助手具有如下功能:
1. 支持 UDP、TCP Server、TCP Client三种工作模式;
2. 支持ASCII/Hex发送和接收,且发送和接收都支持中文;
3. 支持日志接收模式:接收内容时自动显示时间戳等相关信息;
4. 支持接收数据保存到文件(使用spdlog),且接收数据可设置自动滚屏;
5. 发送内容支持转义字符,例如发送框中包含诸如\r\n等转义符时,会自动解析成对应的ASCII码进行发送;
6. 支持发送数据自动添加递增数据尾,这个在每次发送相同数据时非常有用,可以区分每次发送;
7. 支持从文件导入数据用于发送;
8. 支持任意间隔发送,循环发送;
9. 发送框支持文本选择和复制;
10. 接收框支持文本选择、复制、查找和清空;
11. 状态栏网络错误提示;
12. 支持设置主题。

 二.界面主题

默认跟随系统样式和颜色,可以切换到浅色主题或深色主题。

1.浅色主题

2.深色主题

 三.查找和过滤

四.收发数据

这里演示一个循环0ms,周期发送数据吧,这种情况下,野人家园的NetAssist收到数据后界面会卡死,而且无法发送数据了。所以这里接收也用本网络调试助手。

可以看到,B在接收数据时,并不会卡顿。A停止发送后,B也停止刷新了,说明了数据数据渲染的实时性,此时内存中并无数据堆积。

其他的特性都比较普通,就不演示了。

原文链接:ASIO网络调试助手之一:简介-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/53452.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【VUE】跨域问题的概念,以及解决方法。

目录 1.跨域概念 2.解决方法 2.1 配置网络请求代理 2.2 使用CrossOrigin 注解 2.3 通过配置文件实现跨域 2.4 添加 CorsWebFilter 来解决跨域问题 1.跨域概念 跨域问题是由于浏览器实施了同源策略,该策略要求请求的域名、协议和端口必须与提供资源的服务相同。…

Linux线程管理进阶:分离,等待、终止与C++11线程接口的封装实践

🍑个人主页:Jupiter. 🚀 所属专栏:Linux从入门到进阶 欢迎大家点赞收藏评论😊 目录 🍑线程终止🍍线程等待*多线程创建,传自己定义的对象示例代码:* 🍎线程的分…

STM32(十二):DMA直接存储器存取

DMA(Direct Memory Access)直接存储器存取 DMA可以提供外设和存储器或者存储器和存储器之间的高速数据传输,无须CPU干预,节省了CPU的资源。(运行内存SRAM、程序存储器Flash、寄存器) 12个独立可配置的通道&…

[数据集][目标检测]井盖丢失未盖破损检测数据集VOC+YOLO格式2890张5类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):2890 标注数量(xml文件个数):2890 标注数量(txt文件个数):2890 标注…

页面要突破手机安全区域来全屏显示(沉浸式模式显示),其他页面不需要,如何设置安全区域文字颜色

#效果图 ##思路遇到的问题 在aboutToAppear中使用window模块的 getLastWindow 和 setWindowLayoutFullScreen两个方法来处理全屏显示 设置沉浸式模式的特点: 在任何一个页面中设置过一次之后,其他页面也会跟着全屏显示 这么处理会出现问题&#xff1a…

如何使用Spoon连接data-integration-server并在服务器上执行转换

1.建立连接 2.新建转换或任务 3.右键[子服务器],新建一个服务器连接(data-integration-server服务器的连接信息) 4.右键[Run configurations],新建一个执行连接,勾选相应的选项即可: 5.选择服务器运行即可! 6.最后,你可以通过服务器端的WEB查看执行日志…

猫眼电影字体破解(图片转码方法)

问题 随便拿一篇电影做样例。我们发现猫眼的页面数据在预览窗口中全是小方框。在当我们拿到源码以后,数据全是加密后的。所以我们需要想办法破解加密,拿到数据。 破解过程 1.源码获取问题与破解 分析 在我们刚刚请求url的时候是可以得到数据的&#xff…

【MySQL】MySQL操作介绍

MySQL操作 认识 MySQL什么是 MySQL关系型数据库的组成结构"客户端-服务器"结构 数据库的基本操作创建数据库查看数据库删除数据库使用数据库 数据类型整型浮点类型字符串类型日期类型总结 表的操作创建表查看表查看表的信息删除表 数据的基础操作插入数据指定列插入全…

Java过滤器和监听器

1. 过滤器 1.1. 过滤器 使用baseServlet的优点:方便进行乱码的统一处理,但是如果不使用servlet,在进行中文乱码处理时就需要在每个servlet中书写,比较麻烦 问题:重复的代码在项目中多次使用书写 解决:过滤…

2024 第七届“巅峰极客”网络安全技能挑战赛初赛 Web方向 题解WirteUp

EncirclingGame 题目描述:A simple game, enjoy it and get the flag when you complete it. 开题,前端小游戏,红点出不去就行 直接玩通关了 看看如何不玩也能拿到flag,flag存储在后端php文件内,前端找不到。 看一下…

【原创】java+springboot+mysql校园二手商品交易网设计与实现

个人主页:程序猿小小杨 个人简介:从事开发多年,Java、Php、Python、前端开发均有涉猎 博客内容:Java项目实战、项目演示、技术分享 文末有作者名片,希望和大家一起共同进步,你只管努力,剩下的交…

【MySQL】MySQL基础

目录 什么是数据库主流数据库基本使用MySQL的安装连接服务器服务器、数据库、表关系使用案例数据逻辑存储 MySQL的架构SQL分类什么是存储引擎 什么是数据库 mysql它是数据库服务的客户端mysqld它是数据库服务的服务器端mysql本质:基于C(mysql&#xff09…

QT 编译报错:C3861: ‘tr‘ identifier not found

问题: QT 编译报错:C3861: ‘tr’ identifier not found 原因 使用tr的地方所在的类没有继承自 QObject 类 或者在不在某一类中, 解决方案 就直接用类名引用 :QObject::tr( )

【舍入,取整,取小数,取余数丨Excel 函数】

数学函数 1、Round函数 Roundup函数 Rounddown函数 取整:(Int /Trunc)其他舍入函数: 2、Mod函数用Mod函数提取小数用Mod函数 分奇偶通过身份证号码判断性别 1、Round函数 Roundup函数 Rounddown函数 Round(数字,保留几位小数)(四…

SOEX从去中心化的链上社交关系到创收策略

是时候摆脱传统的在线社区,真正进入 Web3 了,利用区块链的力量,并理解社交互动的意义远不止分享内容或复制交易。代币化将赋能参与提升到一个全新的水平,并带来一系列新的机会。 社交网络可以发挥强大的作用,尤其是从…

Android的logcat日志详解

Android log系统 logcat介绍 logcat是android中的一个命令行工具,可以用于得到程序的log信息。下面介绍 adb logcat中的详细参数命令以及如何才能高效的打印日志,或把日志保存到我们指定的位置。 可以输入 adb logcat --help,查看一下一些简…

VMware vSphere5.0关闭虚拟机电源时,报错从ESXI主机接收到错误

ESXI和VCENTER都是5.0版本的,有台虚拟机关机报错提示从ESXI主机接受到意外错误 具体报错信息如下: 从VCENTER平台对该虚拟机做任何操作都无法生效,后来查看了虚拟机的网络和端口,发现SSH能正常联通,进入虚拟机后使用命…

【云原生】docker 部署 Doris 数据库使用详解

目录 一、前言 二、数据分析概述 2.1 什么是数据分析 2.2 数据分析目的和意义 2.3 数据分析常用的技术和工具 2.3.1 编程语言 2.3.2 数据处理和分析库 2.3.3 数据可视化工具 2.3.4 数据库系统 2.3.5大数据处理框架 2.3.6 云服务和平台 2.3.7 其他工具 三、Doris介绍…

gdb中使用python脚本

1、入门案例 首先有1个a.cpp&#xff0c;代码如下&#xff1a; #include <map> #include <set> #include <iostream> #include <string>using namespace std;struct MyStruct {std::string mName;std::map<int, std::string> mField1;std::set…

51单片机的无线病床呼叫系统【proteus仿真+程序+报告+原理图+演示视频】

1、主要功能 该系统由AT89C51/STC89C52单片机LCD1602显示模块温湿度传感器模块矩阵按键时钟模块等模块构成。适用于病床呼叫系统、16床位呼叫等相似项目。 可实现基本功能: 1、LCD1602实时显示北京时间、温湿度信息、呼叫床位等信息&#xff1b; 2、DHT11采集病房温湿度信息&…