当前位置: 首页 > news >正文

QT+网络调试助手+TCP客户端

一、网络调试助手UI界面 

编程主要思路:

首先将水平的控件  水平布局 ,然后相对垂直的控件  垂直布局  ,哪怕是底下的groupBox也需要和里面的内容 水平布局,然后最后框选全部  栅格布局。如果需要界面自适应窗口大小,可以点击界面的空白处,然后点击栅格布局,即可界面自适应。

二、网络调试助手 控件名称修改

三、代码编写

 widget.h

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>#include <QTcpSocket>   //客户端头文件
#include <QTimer>
#include <QDateTime>QT_BEGIN_NAMESPACE
namespace Ui {
class Widget;
}
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();private slots:void on_clearReceivePushButton_clicked();void connected_slot();  //自定义处理信号的槽函数void readyRead_slot();  //自定义处理readyRead信号的槽函数void disconnected_slot();   //自定义处理disconnected信号的槽函数void on_connectPushButton_clicked();void on_sendPushButton_clicked();void on_clearSendPushButton_clicked();void on_sendCheckBox_stateChanged(int arg1);private:Ui::Widget *ui;QTcpSocket *socket;//定义一个客户端指针QTimer *timer; //定义一个定时器用于定时发送数据
};
#endif // WIDGET_H

widget.c

#include "widget.h"
#include "ui_widget.h"#include <QMessageBox>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//给客户端指针实例化空间socket = new QTcpSocket(this);//如果连接服务器成功,该客户端就会发射一个connected信号//我们可以将该信号连接到自定义的槽函数中处理相关逻辑//由于该连接只需要连接一次。所有在构造函数中即可connect(socket, &QTcpSocket::connected, this, &Widget::connected_slot);//客户端与服务器连接成功后,如果服务器向客户端发来数据,那么该客户端就会自动发射一个readyRead信号//我们可以将该信号连接到自定义槽函数中处理相关逻辑connect(socket, &QTcpSocket::readyRead, this, &Widget::readyRead_slot);//当客户端与服务器断开连接后,该客户端就会自动发射1一个disconnected信号//我们可以将该信号与自定义的槽函数连接//由于只需要连接一下,所有该连接写到构造函数即可connect(socket, &QTcpSocket::disconnected, this, &Widget::disconnected_slot);timer = new QTimer;timer->setInterval(1000);// 设置默认定时时长1000msconnect(timer, &QTimer::timeout, this, [=](){on_sendPushButton_clicked();});
}Widget::~Widget()
{delete ui;
}void Widget::on_clearReceivePushButton_clicked()
{ui->receivePlainTextEdit->clear();
}void Widget::connected_slot()
{QMessageBox::information(this,"成功","连接服务器成功");ui->connectPushButton->setText("断开连接");
}void Widget::readyRead_slot()
{QByteArray msg = socket->readAll();//读取该客户端中的数据QString str = ui->receivePlainTextEdit->toPlainText() +  "\r\n" ;if(ui->timeCheckBox->isChecked())//如果显示时间服务框被勾选{QDateTime nowtime = QDateTime::currentDateTime();str += "[" + nowtime.toString("yyyy-MM-dd hh:mm:ss") + "] " + QString::fromLocal8Bit(msg);}else{str += QString::fromLocal8Bit(msg);}ui->receivePlainTextEdit->setPlainText(str);//将数据展示在UI界面
}//disconn信号对应槽函数的实现
void Widget::disconnected_slot()
{QMessageBox::information(this, "退出", "服务器断开");ui->connectPushButton->setText("连接服务器");
}void Widget::on_connectPushButton_clicked()
{if(ui->connectPushButton->text().contains("连接服务器")){QString hostName = ui->ipLineEdit->text();              //获取主机地址quint16 port = ui->portLineEdit->text().toUInt();       //获取端口号socket->connectToHost(hostName,port);}else{socket->close();}
}void Widget::on_sendPushButton_clicked()
{//获取UI界面中的编辑的文本内容QString str = ui->sendTextEdit->toPlainText();//将消息发送给服务器socket->write(str.toLocal8Bit());
}void Widget::on_clearSendPushButton_clicked()
{ui->sendTextEdit->clear();
}void Widget::on_sendCheckBox_stateChanged(int arg1)
{if(arg1 == 0)//如果复选框没有被选中{timer->stop();//定时器停止发送}else{timer->start(ui->timeLineEdit->text().toInt());}
}

四、实验结果

五、完整工程

链接:https://pan.baidu.com/s/17FckX9WjpJuDNUk1OtP1SQ?pwd=8888 
提取码:8888 

相关文章:

QT+网络调试助手+TCP客户端

一、网络调试助手UI界面 编程主要思路&#xff1a; 首先将水平的控件 水平布局 &#xff0c;然后相对垂直的控件 垂直布局 &#xff0c;哪怕是底下的groupBox也需要和里面的内容 水平布局&#xff0c;然后最后框选全部 栅格布局。如果需要界面自适应窗口大小&#xff0c…...

数据库调优-SQL语句优化

2. SQL语句优化 sql 复制代码 # 请问这两条SQL语句有什么区别呢&#xff1f;你来猜一猜那条SQL语句执行查询效果更好&#xff01; select id from sys_goods where goods_name华为 HUAWEI 麦芒7 魅海蓝 6G64G 全网通; ​ select id from sys_goods where goods_id14967325985…...

h函数 render函数 JSX基本用法

1.1认识h函数&#xff08;hyperscript工具 基于JavaScript编写模板的工具&#xff09; Vue推荐在绝大多数情况下使用模板来创建你的HTML&#xff0c;然后一些特殊的场景&#xff0c;需要JavaSript的完全编程能力&#xff0c;可以使用渲染函数&#xff0c;它比模板更接近编译器&…...

购物车操作

添加购物车&#xff1a; 需求分析和接口设计&#xff1a; 接口设计&#xff1a; 请求方式&#xff1a;POST 请求路径&#xff1a;/user/shoppingCart/add请求参数&#xff1a;套餐id、菜品id、口味返回结果&#xff1a;code、data、msg 数据库设计&#xff1a; 这上面出现了…...

华为手机 鸿蒙系统-android studio识别调试设备,开启adb调试权限

1.进入设置-关于手机-版本号&#xff0c;连续点击7次 认证&#xff1a;有锁屏密码需要输入密码&#xff0c; 开启开发者配置功能ok 进入开发者配置界面 打开调试功能 重新在androd studio查看可运行running devices显示了&#xff0c; 不行的话&#xff0c;重启一下android …...

计算机网络——Dijkstra路由算法

实验目的 实现基于 Dijkstra 算法的路由软件 实验内容 网络拓扑如图所示 实验过程 先编写开辟应该图的空间&#xff0c;然后给点映射数字&#xff0c;构建图。程序获取用户输入的学号&#xff0c;构建图中边的权值。接下来程序从用户输入获取最短路径的搜索起点&#xff0…...

AI智能化逐渐趋于成熟后,预测今后最吃香的开发职业

AI智能化正在成熟的路途中&#xff0c;这中间会有波折&#xff0c;但终有一天会来的&#xff0c;我相信等到了这一天&#xff0c;我们的开发效率和代码质量&#xff0c;将会大大不同&#xff0c;而我们的团队与个人&#xff0c;也会面临着很棒的体验。 那么在AI智能化真正趋于成…...

Acwing2024蓝桥杯BFS

AcWing 1355. 母亲的牛奶 bfs: #include<iostream> #include<queue> using namespace std; const int N21; int A,B,C; bool flag[N][N][N]; struct node{int a,b,c; }; queue<node>q; void check(int a,int b,int c){if(!flag[a][b][c]){q.push({a,b,c})…...

vue打包报错:CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory

前言&#xff1a; vue项目&#xff0c;打包报错&#xff1a;CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory 报错现象&#xff1a; 报错原因&#xff1a; 这个错误是由Node.js在尝试分配内存时因为系统的可用内存不足而发生的。"JavaScript heap…...

计算机组成原理网课笔记

无符号整数的表示与运算 带符号整数的表示与运算 原反补码的特性对比 移码 定点小数...

Python学习第四部分 函数式编程

文章目录 高阶函数lambda 表达式和匿名函数偏函数闭包map函数reduce函数filter 函数sorted函数 函数式编程主要学习&#xff1a;高阶函数、闭包closure、匿名函数、偏函数&#xff0c;map函数、reduce函数、filter函数、sorted函数 函数式编程是个很古老的概念&#xff0c;最古…...

数据结构-二叉树-AVL树(平衡二叉树)

红黑树是平衡二叉树的一个变种。 一、 产生平衡二叉树的原因。 二叉搜索树的问题在于极端场景下退化为类似链表的结构&#xff0c;所以搜索的时间复杂度就变成了O(N)。为了保证二叉树不退化为链表&#xff0c;我们必须保证二叉树的的平衡性。 二叉平衡搜索树就是解决上面的问…...

【Qt问题】windeployqt如何提取Qt依赖库

往期回顾 【Qt问题】Qt Creator 如何链接第三方库-CSDN博客 【Qt问题】Qt 如何带参数启动外部进程-CSDN博客 【Qt问题】VS2019 Qt win32项目如何添加x64编译方式-CSDN博客 【Qt问题】windeployqt如何提取Qt依赖库 考虑这个问题主要是&#xff1a;当我们的程序运行好之后&#…...

VS2019下使用MFC完成科技项目管理系统

背景&#xff1a; &#xff08;一&#xff09;实验目的 通过该实验&#xff0c;使学生掌握windows程序设计的基本方法。了解科技项目组织管理的主要内容和管理方面的基本常识&#xff0c;熟练应用数据库知识&#xff0c;通过处理过程对计算机软件系统工作原理的进一步理解&…...

【Android】Kotlin学习之数据容器(数组for循环遍历)

数组遍历 1. for ( item in arr){…} 2. for ( i in arr.indeces ) {…} (遍历下标) 3. for ((index, item) in arr.withInfex()) {…} (遍历下标和元素) 4. arr.forEach {} ( 遍历元素 ) 5. arr.forEachIndexed{index, item -> …}...

JavaWeb_请求响应_简单参数实体参数

一、SpringBoot方式接收携带简单参数的请求 简单参数&#xff1a;参数名与形参变量名相同&#xff0c;定义形参即可接收参数。并且在接收过程中&#xff0c;会进行自动的类型转换。 启动应用程序后&#xff0c;在postman中进行测试&#xff1a; 请求成功&#xff0c;响应回了O…...

windows端口复用

1. 概述 使用 HTTP.sys 中的 Net.tcp Port Sharing 服务&#xff0c;配合 WinRM 实现端口复用。 优点&#xff1a; HTTP.sys 为 windows 原生机制&#xff0c; WinRM 为 windows 自带功能&#xff0c;动作较小&#xff0c;不易触发主 动防御。 需要管理员权限。 2. 原理 (…...

[Redis] 使用布隆过滤器和分布式锁实现用户注册

布隆过滤器&#xff08;Bloom Filter&#xff09;是一种数据结构&#xff0c;用于快速判断一个元素是否可能存在于一个集合中。它通过使用多个哈希函数和一个位数组来表示一个集合&#xff0c;当一个元素被加入到集合时&#xff0c;通过哈希函数计算出多个哈希值&#xff0c;并…...

Okhttp 发送https请求,忽略ssl认证

工具类 import lombok.extern.slf4j.Slf4j;import javax.net.ssl.HostnameVerifier; import javax.net.ssl.SSLContext; import javax.net.ssl.SSLSocketFactory; import javax.net.ssl.TrustManager; import javax.net.ssl.TrustManagerFactory; import javax.net.ssl.X509Tru…...

IT项目管理-大题【太原理工大学】

一、根据进度网络写出时间参数表、关键路径、总工期 此类题一般是给一个表&#xff0c;问三问。 第一问会问某个活动的时间参数&#xff0c;但我们需要把整个表都求出来&#xff0c;否则单求一个很困难&#xff08;如果你就是不想求整张表也行&#xff0c;不是硬性要求&#xf…...

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…...

基于FPGA的PID算法学习———实现PID比例控制算法

基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容&#xff1a;参考网站&#xff1a; PID算法控制 PID即&#xff1a;Proportional&#xff08;比例&#xff09;、Integral&#xff08;积分&…...

Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例

使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件&#xff0c;常用于在两个集合之间进行数据转移&#xff0c;如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model&#xff1a;绑定右侧列表的值&…...

ssc377d修改flash分区大小

1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...

家政维修平台实战20:权限设计

目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系&#xff0c;主要是分成几个表&#xff0c;用户表我们是记录用户的基础信息&#xff0c;包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题&#xff0c;不同的角色&#xf…...

五年级数学知识边界总结思考-下册

目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解&#xff1a;由来、作用与意义**一、知识点核心内容****二、知识点的由来&#xff1a;从生活实践到数学抽象****三、知识的作用&#xff1a;解决实际问题的工具****四、学习的意义&#xff1a;培养核心素养…...

NLP学习路线图(二十三):长短期记忆网络(LSTM)

在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...

LeetCode - 199. 二叉树的右视图

题目 199. 二叉树的右视图 - 力扣&#xff08;LeetCode&#xff09; 思路 右视图是指从树的右侧看&#xff0c;对于每一层&#xff0c;只能看到该层最右边的节点。实现思路是&#xff1a; 使用深度优先搜索(DFS)按照"根-右-左"的顺序遍历树记录每个节点的深度对于…...

Mysql8 忘记密码重置,以及问题解决

1.使用免密登录 找到配置MySQL文件&#xff0c;我的文件路径是/etc/mysql/my.cnf&#xff0c;有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...

C++ 设计模式 《小明的奶茶加料风波》

&#x1f468;‍&#x1f393; 模式名称&#xff1a;装饰器模式&#xff08;Decorator Pattern&#xff09; &#x1f466; 小明最近上线了校园奶茶配送功能&#xff0c;业务火爆&#xff0c;大家都在加料&#xff1a; 有的同学要加波霸 &#x1f7e4;&#xff0c;有的要加椰果…...