这个项目提供了一个基于 Qt5 + C++11 的多线程 TCP 服务端 (“Server”) 实现,名字叫 QtTcpThreadServer。其主要特点包括:
继承自 QTcpServer,监听端口并接受连接。
有多线程处理机制,把刚进来的 QTcpSocket 移动到某个工作线程中处理网络读写。
提供两种方式分配线程:一种是固定线程数量;另一种还限定每个线程处理的连接数目。这样可以控制并发连接和线程开销。
用到了 Qt5 的信号/槽(signal/slot)机制,使用了新的语法,并利用 lambda 表达式来简化代码。
另外还有一个 test-client 用来测试该 Server 的功能。仓库中还有旧版本 QLibeventTcpServer(用 libevent 的模型)以及一些“old”分支,用于对比或历史用途。
GitHub
适用人群
这个项目比较适合以下几类人:
学习 Qt 网络编程 / 多线程编程 的开发者,想了解如何结合 QTcpServer、QTcpSocket、事件循环(event loop)、线程分配、信号槽和 lambda。
需要在 Qt 框架下搭建网络服务端(TCP 协议)的初学者或中等经验者。
对性能有一定要求,希望控制连接数、线程数来避免资源浪费或线程过多开销的人。
使用场景及目标
这个工程可以用在下面这些场景,目标是搭建一个比较健壮、可控并发的 TCP 服务端:
内网或局域网环境中,需要多个客户端同时连接服务器交换数据(例如聊天、游戏、小型通信服务、监控系统等)。
用作学习或模板用途:比如自己做项目需要 TCP 服务端,可以拿这个作为基础框架改造。
用在资源有限的环境中,希望固定线程数或限制每线程连接数,以避免线程数爆炸或线程切换开销
1