Qt客户服务端传输数据总结
来源:互联网 发布:网王之数据涟漪了 编辑:程序博客网 时间:2024/05/23 19:18
第一个小项目是关于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类,利用movetoThread方法改变线程所属到一个继承自QThread类的类的对象中。
盲点:
关于Qt的网络套接字用法?规避了这个问题,采用了Windows系统提供的套接字
关于QByteArray
关于Qt的流
改进的地方:
把通讯模块独立设计出来
- Qt客户服务端传输数据总结
- 总结使用Get、Post、Socket三种方式连接服务端与传输数据的步骤
- 客户端通过Http传输数据到服务端
- 模拟客户端与服务端大数据二进制压缩传输
- C#客户端和服务端数据的同步传输
- 服务端和Android客户端利用Socket传输JSON数据
- C# TCP实现多个客户端与服务端 数据 传输
- TCP实现多个客户端与服务端 数据 传输
- oc客服端向服务端传输数据的加密
- 实现客户端与服务端之间传输json数据
- QT 传输图片出现数据缺失
- 管道客户服务端程序
- 09_TCP客户服务端
- 客户端POST发送json数据给服务端,客户端端接收服务器端json数据响应
- webservice 图片传输 服务端
- tcp视频传输-服务端
- 网络数据(socket)传输总结
- 网络数据(socket)传输总结
- 一周乱弹: jquery validate 手动触发方式
- springboot使用AOP
- Oracle 11g数据库详细安装步骤图解
- 输出9 * 9乘法口诀
- springboot使用拦截器
- Qt客户服务端传输数据总结
- leetcode-第十七周
- Pagodas --(hdu5512)2015ACM/ICPC亚洲区沈阳站
- 欢迎使用CSDN-markdown编辑器
- thingsboard安装及配置
- Android基础知识之Fragment
- 如何在XAMPP配置网站首页
- Redis源码剖析和注释(二十七)--- Redis 故障转移流程和原理剖析
- solr服务器的搭建 for windows