Qt客户服务端传输数据总结

本文介绍了使用Qt进行多线程网络传输的实践经验,涉及服务端如何每隔1秒发送不同报文,客户端如何接收并显示报文内容及统计报文个数。重点讨论了线程间数据共享、自定义信号、结构体通过套接字传输的方法,以及Qt中的多线程开启方式。同时,作者指出在项目中避开了Qt的网络套接字,选择使用Windows系统套接字,并提出未来将对通讯模块进行独立设计。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一个小项目是关于Qt多线程与网络传输的。
环境:VS2015+QT5.3(或者任意的其他版本的VS+QT组合)
要求:分别编写一个客户端和服务器端的程序,程序A作为客户端,程序B作为服务器端,具体要求如下(期限3到5天时间):
a)程序B需要每隔1秒向程序A不停的传送报文1,报文2和报文3三种报文,用多线程的方式实现三种报文的发送。报文采用结构体进行定义(包括报文头,报文数据,报文尾三部分),报文数据也用结构体的形式进行定义。
b)程序A的界面需要三个元素:
1)可以进行服务器端IP和端口号配置的输入框;
2)需要对程序B发过来的报文内容进行显示(只需要显示报文数据内容,不需要显示报文头和尾);
3)需要一个列表用来对不同类型的报文的个数进行统计,列表列名包括报文名字和报文个数(报文个数需要实时统计)。
c)通迅部分采用的通讯机制,不做强制要求,以实现为目的;其他部分需要采用QT实现。
这个题目我的思路是:
首先解决服务端的数据发送问题:
初始化网络环境–>初始化套接字–>等待客户端连接–>接入套接–>初始化三个线程并把套接字传入–>发送数据
客户端接收数据:
初始化网络环境–>初始化套接字–>连接服务器–>获取套接字数据存入缓存池–>刷新界面数据

期间遇到的疑惑:

线程间共享数据?
线程间贡献一个数据,好像只要不是new出来的,可以共享。几个共享线程间发送数据,共享一个套接字,把数据作为线程类初始化参数传过去。

Qt的自定义信号是怎么做的?
写一个函数,定义触发条件,满足触发条件了就emit发送信号。

如何通过套接字传输结构体?
内存打包。把内存中的内容通过memcpy拷贝到一个字符数组当中。接收之后用一个通用结构体存起来,再通过数据报头解析数据报。我发送的三种报文的大小是一样的,如果大小不一样呢?关于内存对其的规律。

Qt中的多线程开启方式?
线程类继承QThread,重写Run函数。
据说还有一种办法,尚未验证,线程类继承自QObject类,利

1.9 实例:世界你好 1.11 入门级实例 :设计一个用户界面 1.12 入门级程序 :添加地址 1.13 入门实例:地址薄浏览程序 1.14 入门级实例:编辑与删除地址 1.15 入门级实例:地址薄查找功能 1.16 入门实例:从文件中加载与保存到文件 3.1.2 实例:C语言下文件读写操作 3.9 实例:一个简单的文本浏览的例子 3.10 实例:在指定文件系统中寻找一个文件 3.11实例:用Qt类读取一个目录与驱动盘符 3.12 实例:基本布局管理 3.13 实例:文本查找 4.10 实例:组框的使用 4.11 实例:标准菜单使用方法 4.12 实例:最小化到系统托盘 4.13 实例:设计一个图片浏览的软件 4.14 实例:排积木程序 5.11 实例:颜色对话框 5.12 实例:标准对话框 5.13 实例:带有菜单栏与工具条的文本编辑器 5.14 实例:高亮度显示文本 6.9 实例:基本绘画操作 6.10 实例:符合图形绘画 6.11 实例:根据坐标转换图形 7.10 实例:Qt编写客户端程序 7.11 实例:编写FTP客户端程序 7.12 实例:HTTP客户端 7.13 实例:收发广播报文 7.14 实例:HTML预览编辑程序 7.15 实例:Web浏览器 7.16 实例:屏幕截图程序 8.6 实例:SQL缓存表 8.7 实例:基于图片记录查询 8.8 实例:数据库基本浏览 8.9 实例:基本数据处理 9.6 实例:曼德布洛特集合 11.16 实例:鼠标校准程序 11.17 实例:加速图形驱动 11.18 实例:在嵌入式系统中使用OpenGL
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值