最新要闻
- 【环球快播报】公园飞无人机 被男子一板凳拍在地上:怕伤到孩子
- 环球新消息丨为1个亿目标 26岁“背景太假哥”拼了:每天冒严寒、酷暑直播
- 全球看点:智慧管理+贴心服务,这座网红公厕不“简单”
- RTX 4070笔记本挤牙膏?只比RTX 3070快了11%
- 天天热资讯!史上第25个!浙江彩民69元中2.4亿元巨奖 网友调侃:又骗我买彩票
- 全球热讯:不能“回血”了!微软大作《红霞岛》实体版仅提供激活码
- 0反式脂肪酸!旺旺邦德轻乳咖啡官方清仓:9瓶1盒仅19.9元
- 目标基辅号
- 环球观点:鹡鸰女神第2集-鹡鸰女神无修版
- 环球新动态:雷军宣布小米参加MWC 2023大会!铁大、铁蛋机器人海外亮相
- 上海一特斯拉再现失控事故:成道路护栏“终结者”
- 全球实时:插混和增程路线谁更好?院士欧阳明高给出答案
- 上海中环内圈发生单车事故 官方通报:车辆起火翻滚地面 驾驶员死亡
- 全球新资讯:ChatGPT大火 马斯克批OpenAI违背初心:被微软控制 只顾赚钱
- 贵南高铁全线静态验收:时速350公里 南宁到贵阳时间缩短一半
- 世界观热点:蹲夜叉还有意外收获?变异蝴蝶直接就往脸上刷啊!
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
【速看料】[Qt开发/毕业设计/求职项目]局域网环境下远程文件发送部署系统-服务端、客户端双端的讲解
写在前面
本文旨在做一个简单的代码讲解,我会给出源码,然后整个代码的讲解都在源码的基础上进行。
代码可能会随着更新而进行修改,但是整体框架变化不会太大。
(资料图)
整个文章内容不会太多,算是我自己的一个复盘,整个的来说算是一个比较综合的程序开发,不算太难,但对于初学者来说肯定也不会太简单。程序涉及到网络模块、自定义UI、文件读写等内容,但是比较可惜的是作为一个Windows桌面端程序没有涉及到Windows窗体和COM组件,这个是我觉得比较可惜的。
综上,本文不是零基础的项目讲解和代码教学,请至少参考一下下列的确定任务环节,确定自己能看明白需要做些什么再继续阅读本文。
注:我写到一般发现用文字和图片来写教程实在是太折磨了,所以我想偷懒一下直接用视频去讲解,如果急得话可以直接拿我的源码去看,要是不急的话可以直接b站关注我,B站ID:Leventure_轩先生B站主页:Leventure_轩先生
Github:服务端:https://github.com/LeventureQys/FilePlanter客户端:https://github.com/LeventureQys/FilePlanterClient
确定任务
按照我们的标题,是要做一个局域网环境下的远程文件发送部署工具,那么我们需要确定一下基本知识。
1.使用的是Qt开发,所以基本的ui要会用,包括基本的控件,自定义的控件,选择文件等等。包括信号槽机制
2.需要了解最基本的文件IO,至少你得知道在本案例中,文件是通过二进制字符流进行的传输
3.需要了解一些最基本的网络知识,TCP和UDP的协议你至少得知道是什么东西,了解socket通信
4.需要了解什么是注册表,因为其中有些操作需要读写注册表。
ok,在我们知道阅读本文需要知道哪些知识之后,接下来就说说怎么做这个程序。
做什么?怎么做?
做什么?
整个系统由两个软件组成,分别是文件部署服务端及文件部署客户端。我们将一个文件从服务端发送到很多个连接到当前服务端的客户端的指定路径上去。这个是我们的目标
怎么做?
发送端:
1.我们需要一个最基本的界面框架,如下
2.因为文件下发可能会需要面向不同的对象,所以我们可能需要一个自定义的用户对象ui,用于插入到界面ui的右方,如图所示:
用户对象的ui需要提供一些最基本的功能,包括展示指定用户的信息、可以踢出用户、重新发送文件、展示当前用户的发送进度等等。
3.需要一个最基本的TCP连接模块。
4.需要自己来定义一个简单的文件切分的协议。
接收端:
1.同样的需要一个简单的界面
功能比较简单,只需要提供服务端的IP,和一个自身的唯一标识,提供一个文件保存路径即可
2.要能够读写注册表,令自己能够是开机启动(注:开机启动的程序的依赖需要放在指定位置,具体内容请查询百度)
3.要有一个读写接收服务端二进制流的网络服务DLL
4.要有一个能够解析这个二进制流与服务端相对的简单协议。
开始着手做
一、最基本的出发:网络协议
整个软件最最底层的功能自然是网络连接,如果连最起码的网络连接都没有,更不要谈后续的开发了。实际上整个软件都是建立在这个网络协议能够顺利进行并收发信息的基础上。也就是说即使我们整个程序用的是黑板命令行也可以运行,但是如果没有这个网络协议,那么整个程序就无法正常进行了。
网络通信模块的详情见Github:LgQtNetwork
这个仓库里面包含了服务端和客户端两边,接下来我要对代码进行简单的讲解。注:整个通讯库使用的是Qt的类,需要在模块里加上一个network并使用到相关的模块,所有的行为都托管交给了Qt的内部去处理,所以这里不存在丢包、粘包的处理,统一交给Qt的lib去管理了。
TCP协议
1.发送端:
Socket通讯可以理解为单纯地发送一些数据包,这些数据包中只有内容,并没有包括但不限于字符总长度、当前字符位置、第几个包等这些信息,这些信息可能统统需要我们自己去定义。
首先我们知道,我们不可能把一个socket包定义的太大,比如一次发几十上百万个字节,这是显然不可能的,这样操作的话会使得我们的tcp连接性能变差而且丢包的损失严重。而且数字是由顺序的,但是网络连接不一定能够保证所有的顺序都保持匀速运转,可能有的快有的慢——那我们数据的顺序又该如何保证呢?
当然了这些问题我们这里是不考虑的,一部分是我不懂,另一部分是这里太小了写不下(笑
不急,我们一步步来
1>首先要建立一个QTcpServer的实例对象,然后让它去监听端口:
绑定新用户登录的事件,每当一个新用户进入之后,就通过一个结构体登记这个用户并把它记录在一个哈希表中方便通过其唯一ID来搜索这个用户
哈希表:用户结构体:进行信号的绑定,方便后续对外提供接口:
如何发送TCP消息给其他客户端,主要是看这个SendMsg:
这个SendMsg是另一个方法,可以按F12走进去看下:这里其实相当于就是简单处理了以下,把这个二进制流的消息分段1024个字节为一组打包发送,通过TcpServer的write方法发送指定长度的字节
TCP消息的接受也是类似,包括客户端的TCP消息收发也是类似的,唯一的不同就是一个是TCP的服务端,一个是TCP的客户端,一个是监听等待客户连接,一个是客户端主动连接等到服务端返回,有点区别,但区别不大。
-
【速看料】[Qt开发/毕业设计/求职项目]局域网环境下远程文件发送部署系统-服务端、客户端双端的讲解
写在前面本文旨在做一个简单的代码讲解,我会给出源码,然后整个代码的讲解都在源码的基础上进行。代码...
来源: 【速看料】[Qt开发/毕业设计/求职项目]局域网环境下远程文件发送部署系统-服务端、客户端双端的讲解
【环球快播报】公园飞无人机 被男子一板凳拍在地上:怕伤到孩子
环球新消息丨为1个亿目标 26岁“背景太假哥”拼了:每天冒严寒、酷暑直播
全球看点:智慧管理+贴心服务,这座网红公厕不“简单”
【快播报】[数据结构] 稀疏矩阵的转置与快速转置
天天微动态丨关于Linux升级内核时报错-grub2-editenv: error: environment block too small.
RTX 4070笔记本挤牙膏?只比RTX 3070快了11%
天天热资讯!史上第25个!浙江彩民69元中2.4亿元巨奖 网友调侃:又骗我买彩票
全球热讯:不能“回血”了!微软大作《红霞岛》实体版仅提供激活码
焦点报道:0X01 位运算笔记
P4171 满汉全席
0反式脂肪酸!旺旺邦德轻乳咖啡官方清仓:9瓶1盒仅19.9元
目标基辅号
环球观点:鹡鸰女神第2集-鹡鸰女神无修版
环球新动态:雷军宣布小米参加MWC 2023大会!铁大、铁蛋机器人海外亮相
【世界快播报】(数据库系统概论|王珊)第五章数据库完整性-第四、六、七节:约束命名子句、断言和触发器
上海一特斯拉再现失控事故:成道路护栏“终结者”
全球实时:插混和增程路线谁更好?院士欧阳明高给出答案
上海中环内圈发生单车事故 官方通报:车辆起火翻滚地面 驾驶员死亡
每日速讯:F - 树状数组 2【GDUT_22级寒假训练专题五】
全球新资讯:ChatGPT大火 马斯克批OpenAI违背初心:被微软控制 只顾赚钱
贵南高铁全线静态验收:时速350公里 南宁到贵阳时间缩短一半
速看:05-python运算符
【全球聚看点】字节二面:10Wqps超高流量系统,如何设计?
全球快看:动态规划解决最值、有多少方案之类问题
[奶奶看了都会]ChatGPT接入企业微信成为聊天机器人
世界观热点:蹲夜叉还有意外收获?变异蝴蝶直接就往脸上刷啊!
今日热讯:暴雪宣布《暗黑4》新雕像
43年的友情!马云低调现身墨尔本 与昔日好友相见
每日视点!男子将比亚迪海豚改装称房车:车内洗澡、看电影、吃火锅
全球热点!仿豆瓣发布-编辑框自适应高度,自动滚动定位到焦点输入
今日热门!(数据库系统概论|王珊)第五章数据库完整性-第一、二、三节:数据库三大完整性
精选!特斯拉前脸被完全撞烂 气囊没弹!车主:可以去维权吗?
当前聚焦:《地下城与勇士》大面积更改名称、美术素材 玩家喊话中消协:退钱
环球通讯!特斯拉创始人:自动驾驶是胡扯 汽车不应像iPhone
【天天新要闻】AMD、NV把显卡卖到万元 Intel成救星:下代能冲RTX 4080
手机预置软件影响用户体验 央媒揭秘幕后原因:厂商利益驱动
全球视点!苹果上新348元省电保护膜!网友:觉得贵的不是目标客户
读Java实战(第二版)笔记14_CompletableFuture及反应式编程背后的概念
如果我种一个橄榄核,它会长成一棵树吗?
天天即时:全球第10 三星Galaxy S23 Ultra相机DXO等分140:不敌小米11 Ultra
《塞尔达传说:王国之泪》日本最新海报曝光:腐朽大师剑现身
讯息:《生化危机4:重制版》硬件要求出炉:开光追 A卡很受伤
仰望银河背后 吉利是真着急了
散片就是这么来的?男子腰缠155片CPU入境被海关查获
【全球热闻】SpringBoot中统一API返回格式的两种方式
焦点消息!C#两个特殊的集合类StringCollection与StringDictionary
每日聚焦:03-数据类型
快播:期末复习——虚拟内存
速讯:04-数据类型转换
当前报道:安卓机皇!三星Galaxy S23 Ultra下周首销:价格对标iPhone 14 Pro Max
环球热讯:蜜雪冰城门店没关音响扰民一宿 客服:门店整改 向周围居民送冰淇淋致歉
RTX 40系移动平台性能测试出炉:RTX 4080与RTX 4090差距极小
世界新消息丨日本新生儿数量首次跌破80万 创有统计以来最低值:789万老人还在打零工
全球快播:iPhone 14最高降1600元 苹果经销商贴本卖机:谁还买安卓?
九型性格系统_0型血女生的性格
世界快资讯丨首届中国非遗保护年会开幕 四川非遗项目精彩亮相
简讯:超过年限要报废!老人用高压锅炖肉脸部被重伤
女子网购奶粉4个月吃剩半罐退货:被店家吐槽似乞丐
官方称《狂飙》拍摄地拍照收费算勒索: “刀哥”回应不是我 行为不可取
头条焦点:伸展树(Splay)详解
当前简讯:期末复习——内存管理
报道:django连接ubuntu22下的mysql8
打造自己的ChatGPT:逐字打印的流式处理
从矩阵的谱半径到神经网络梯度消失
当前速读:女子厨房接水时速热水龙头突然爆炸冒白烟:爆炸声堪比雷响
【天天时快讯】特斯拉Model 3追尾公交1死1伤 事故已影响销售:网友关心刹车问题
全球快资讯丨女子屋内湿度表1年数值不变 好奇拆下检查后无语:还以为是坏的
世界时讯:【JS】Pug调用自定义JS函数
头条:Java正则匹配域名白名单
曾经很火但消失了的APP!网友第一个想到的是”腾讯微博“
环球即时:女子入住网红酒店发现床垫有尿渍:满房一股味
防AI越界!微软将出手:把必应聊天回复限制在5条以内
天天热文:全球最高安全标准 我国自研华龙一号技术:太平岭核电预计2025年投产发电
天天热资讯!挑战全网最土的“公主下午茶” 让人看饿:网友感慨羞辱多少爱装腔作势人
【新要闻】组合数学_第1章_排列与组合
每日消息!称霸意甲的非洲新一代神锋,奥斯梅恩正在征服足坛
让NV对30系显卡降价不可能!厂商清仓RTX 3080:2年后价格重回首发价
全球观速讯丨《文明6》已玩腻 等了7年的《文明7》官宣:主管大换血
环球关注:tui.editor一款功能强大的markdown编辑器
热消息:关于python中将字典的所有key组成一个列表的方式
【环球报资讯】Cesium CallbackProperty(十五)
【世界独家】全天候显示能掉多少电?iOS 16.4告诉你
环球观速讯丨公司回应要求员工扫厕所:这是福利 每月有几十元奖励
焦点日报:冲击40亿有望!《流浪地球2》累计票房已超38亿
女子情人节翻垃圾桶捡到金链:最后被前主人要回 网友热议
全球速读:【算法训练营day48】LeetCode198. 打家劫舍 LeetCode213. 打家劫舍II LeetCode337. 打家劫舍III
GitHub 入门 与 2023年2月18日10:29:02
观天下!假的!马斯克否认修改算法推荐自己帐号 将追责说谎员工
环球微动态丨颠覆性创新 潍柴全球首发大功率SOFC燃料电池:研发花了20亿
环球新资讯:学习笔记——尚好房项目的数据库建表文件
VirtualBox 配置虚拟机 Host-only 和 Nat
世界百事通!win系统提示请插入多卷集的最后一张磁盘解决方法
第三章 计算机进行小数运算时出错的原因
全球聚焦:北江纺织:拟冲刺上交所IPO上市,预计募资4.22亿元,近年综合毛利率逐年下降
【环球速看料】五菱会玩!城市玩乐潮品SUV悦也“小书包”是块屏:可自定义内容
天天看点:打造名族品牌!杨元庆:联想核心生产制造还是立足中国
天天快播:[数据结构] AVL树
全球头条:超越GPS主导国内导航定位 北斗日定位量超3000亿次
焦点简讯:努比亚Z50 Ultra保护壳泄漏:后置摄像模组巨大无比