先弄清楚:这门课值不值得你花时间

很多做桌面端开发的人,写到涉及网络通信的功能就会卡壳。界面不卡死、断线能重连、高并发下不丢数据,这几件事光靠看语法是写不出来的。这门课解决的就是这个具体场景:怎么在 Qt 框架里把网络通信和多线程结合起来用。它不教你 C++ 基础语法,也不讲 Qt 界面拖拽,而是直接切入 TCP、UDP 在实际工程里怎么落地。如果你平时的工作只是写写本地工具、做点简单界面,那这门课对你来说可能偏早;但如果你要做带网络通信的客户端、服务端工具,或者想往底层架构方向转,这门课的内容是绕不开的。适合有一点 C++ 和 Qt 基础、能独立写简单界面、但没怎么碰过网络编程的人。

建议这样看:先抓协议,再抓线程

资料的组织逻辑很清晰,但不要从头到尾顺序看。建议先把网络通信模型和 TCP 报文那几节过一遍,这部分不写代码,但决定了你后面能不能看懂业务逻辑。三次握手、四次挥手这些概念,如果你没搞懂就直接去看 QTcpSocket 的代码实现,大概率会停在“为什么这么写”的疑问上。看完协议基础,直接跳到 TCP 客户端和服务端的代码实现部分,对照着把客户端和服务端跑通一遍。多线程相关的几节,建议放在最后看,因为它是这门课里最绕的部分——QThread 的几种用法、信号槽在线程间怎么传递、为什么有时候不用信号槽反而更清晰,这些东西光看视频不动手是理不清的。

学完能做什么:从能跑通到能扛住并发

学完之后,你应该能独立写出一个不卡界面的 TCP 客户端和服务端,理解 QTcpSocket 对象在哪个线程、为什么要把它移到独立线程里处理。资料里给的代码不是让你背下来的,而是让你拿来改的。练习的时候,建议先照着实现一遍基础通信,然后自己加几个需求:比如断线重连、超时处理、多客户端同时连接服务端时怎么用线程池管理。UDP 部分相对简单,但别忘了用它写一个简单的广播或组播程序,因为有些业务场景下 UDP 比 TCP 合适得多。这门课的价值不在于让你记住几个类的名字,而在于让你搞清楚“网络数据到了之后,应该由谁处理、在哪处理、怎么处理才不影响界面响应”。把这个问题想明白,你写的 Qt 网络程序就算入门了。


帮助学员掌握Qt高并发网络编程、多线程与网络编程的混合编程

课程目录

*   01 课前准备工作

*   02 Internet与网络通信模型

*   03 OSI七层模型与TCPIP四层模型

*   04 TCP协议报文简介

*   05 TCP协议的三次握手与四次挥手

*   06 TCP网络编程流程简介

*   07 TCP客户端界面创建与美化

*   08 TCP客户端QTcpSocket类

*   09 TCP客户端代码实现

*   10 TCP服务端界面创建与美化

*   11 TCP服务端QTcpServer类

*   12 TCP服务端代码实现

*   13 QTcpSocket对象所在线程分析

*   14 TCP客户端使用QThread类(方式一)

*   15 TCP客户端使用QThread类(方式二)

*   16 TCP客户端使用QThread类(不使用信号槽)

*   17 TCP服务端使用QThread类

*   18 TCP服务端使用QThreadPool类

*   19 UDP协议报文简介

*   20 UDP网络编程流程简介

*   21 UDP客户端界面创建与美化

*   22 UDP之QUdpSocket类

*   23 UDP客户端代码实现

*   24 UDP服务端界面创建与美化

*   25 UDP服务端代码实现

*   26 UDP通信方式剖析

*   27 UDP通用版界面创建与美化

*   28 UDP通用版代码实现

*   29 UDP客户端带心跳检测代码实现

*   30 UDP服务端带心跳检测代码实现

*   31 UDP客户端带心跳检测与消息封装代码实现

*   32 UDP服务端带心跳检测与消息封装代码实现

*   33 QUdpSocket对象所在线程分析

*   34 UDP客户端使用QThread类(方式一)

*   35 UDP客户端使用QThread类(方式二)

*   36 UDP服务端使用QThread类

*   37 UDP单播、组播、广播简介

*   38 UDP组播发送端界面创建与美化

*   39 UDP组播发送端代码实现

*   40 UDP组播接收端界面创建与美化

*   41 UDP组播接收端代码实现

*   42 UDP广播发送端界面创建与美化

*   43 UDP广播发送端代码实现

*   44 UDP广播接收端界面创建与美化

*   45 UDP广播接收端代码实现

*   46 Qt网络编程总结