当前位置:编程学习 > wap >>

怎么用Qt提供的套接字提供类似于WinSocket的Select模式

我遇到这样一个问题:
   我有一个C/S结构的程序,Server端用QTcpServer监听,并接受了来自客户的连接,并为该连接保留了一个QTcoSocket类型的套接字a。为了处理方便,将a的readyRead信号连接到了服务器程序主类的槽readData上。
    现在,我有多个这样的客户需要连接到服务器,于是就有多个来自客户的连接,分别为它们保留套接字b,c,d,e等。但是在为这些套接字连接readyRead信号时,都连接到了readData槽上。
    问题:当readData槽被调用时,无法区分是哪一个客户发来的数据。因为在读取数据的时候,我们是用一个已知的连接(a,b,c,d,e)中的一个去读取。readyRead信号没有参数标明是哪一个套接字来了数据。
    网上有人说道多线程,我觉得有一定道理。但是我不想用多线程,因为:
      1,处理每个客户的数据,都需要和用户界面打交道。这样不太方便
      2,如果用线程,就需要用QTcpSocket的阻塞模式。我感觉搞那么多线程阻塞在那里,不是个好办法。



    现求好的解决方案。高手们支支招。我的QQ2627281378.
     我也会常上来查看帖子。谢谢万分。 QTcpSocket  多客户端  --------------------编程问答-------------------- readyRead你可以改造下,在产生这个信号时,关联发送另外一个信号,带上IP,port什么的
数据量不大的话
就直接select吧 --------------------编程问答-------------------- 可以在槽里用sender函数,获知发信号的QTcpSocket
补充:移动开发 ,  Qt
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,