标题:关于用QTcpServer创建多线程的问题
作者:y1363386323
日期:2016-12-16 16:42
内容:
最近在做服务器与客户端的程序,听说服务器端QTcpServer要用到多线程,网上的教程是为每一个连接的客户端分别创建一个线程。可有一个问题,假如有10000个客户端连接了这个服务器,按照网上的教程,那岂不是要新建10000个线程?这样做估计电脑都快死机了吧!
有没有谁做过这方面的程序,求助啊
#1 [bran_lee 12-16 17:02]
那要看你应用的场景是不是真的需要常连接,不是非要用TCP的,有时用UDP也是可以的,如果确实要用TCP那也没办法,况且如果有那么大量的客户端,也不可能用普通的PC做服务器了吧。
#2 回 bran_lee 的帖子 [y1363386323 12-16 17:57]
bran_lee:那要看你应用的场景是不是真的需要常连接,不是非要用TCP的,有时用UDP也是可以的,如果确实要用TCP那也没办法,况且如果有那么大量的客户端,也不可能用普通的PC做服务器了吧。
(2016-12-16 17:02)
不能用UDP啊,听说UPD会遗失数据。
我想问下,一般的服务器都是为每一个连接来的客户端单独创建一个线程吗?
我有一个想法,就是把10000个连接来的客户端放进一个线程里执行,只是这种方法我用代码写不出来
#3 [yanwuyue 12-17 21:53]
刚好我也写了个TCPServer,我的每个链接不是一直通讯,采用的一个线程挂几个TCP链接的方案
我引用了https://github.com/dushibaiyu/QtTcpThreadServer
#4 [15145093145 12-19 08:43]
mfc qt socket这种框架作 几百的并发还行, 你这种 近1万的 肯定不行, 得用专用的网络框架
javamina
c++ ace boostasiolibevent
jsnode.js
#5 [15145093145 12-19 08:44]
c++的话,
研究过一段ace最后放弃了,就像网上说的一样,他是研究用的,代码也得很炫,但简单问题复杂化
推荐 boost.asio 轻量级