• 10256阅读
  • 3回复

关于QT中的网络模块中QTcpServer类,C/S模式的并发连接访问----请教 [复制链接]

上一主题 下一主题
离线senfrans
 

只看楼主 倒序阅读 楼主  发表于: 2009-12-02
— 本帖被 XChinux 从 General Qt Programming 移动到本区(2011-01-02) —
看了看QT自带的那几个有关QTcpServer和QTcpSocket的例子。
例子中服务器是一直等待新连接直到newConnection 信号触发。
建立信号槽连接    connect(tcpServer, SIGNAL(newConnection()), this, SLOT(sendFortune()));



QTcpServer::nextPendingConnection() 返回一个已连接的QTcpSocket指针。
如clientConnection=tcpServer.nextPendingConnection()
然后    connect(clientConnection, SIGNAL(disconnected()), clientConnection, SLOT(deleteLater()));
connect(clientConnection, SIGNAL(readyRead()), clientConnection, SLOT(dealData()));


如上所示:这种方案是不是就是迭代型服务器? QT中的网络模块有提供了并发服务的API麽  ?
难道只有做成多线程的 来一个连接 启动一个线程处理?多线程中要涉及加锁和信号量 线程安全等 。
另外 不知道QT中有没有IO复用的概念?
离线yj_yulin

只看该作者 1楼 发表于: 2009-12-04
qt中的是跨平台的,所以实现上性能和并发性都不咋的,如果比较关心这些那只有用平台相关的优化技术,IOCP,EPOLL,KQUQUE, 或者其它的一些已经对此有包装的库:ASIO,ACE,TWISTED等
离线senfrans

只看该作者 2楼 发表于: 2009-12-07
引用第1楼yj_yulin于2009-12-04 08:57发表的  :
qt中的是跨平台的,所以实现上性能和并发性都不咋的,如果比较关心这些那只有用平台相关的优化技术,IOCP,EPOLL,KQUQUE, 或者其它的一些已经对此有包装的库:ASIO,ACE,TWISTED等

谢谢
因为我想做的这种 并发性不高 只是在局域网的一个很小的服务器 所以没有用epoll 或ace等
就想用别个都封装好的
方便倒是  
离线swift19221
只看该作者 3楼 发表于: 2011-11-18
我现在就用qt做高并发连接服务器,很头疼,
不可能采用tpc模式啊,
快速回复
限100 字节
 
上一个 下一个