> 文档中心 > QT TCP服务端处理多个客户端发来的消息

QT TCP服务端处理多个客户端发来的消息

此篇文章基于你已经懂得了简单的TCP一对一通信了
不懂的话可以去本篇博客QT TCP简单的通信示例 在此基础稍加修改即可多方通信.
由于有多个客户端,所以需要用一个QList来把所有的客户端给存起来.

int m_iClientCount;    QList<QTcpSocket*> listClient;//用来装每个客户端对应的socket的
//获得连接客户端的SOCKET套接字    m_tsTcpSocket = m_tsTcpServer->nextPendingConnection();    listClient.append(m_tsTcpSocket);//将生成的socket添加到容器里    m_iClientCount++;

然后有信号到来时触发读的槽函数后,直接遍历容器读取即可

QByteArray baArray;//利用for循环循环列表中的每一个连接进来的客户端,判断是哪一个客户端发的数据    for(int i=0;i<listClient.size();i++)    { m_tsTcpSocket = listClient.value(i); baArray = m_tsTcpSocket->readAll(); if(baArray.length()!=0)//如果检测到接收到的数据长度不为0,则代表是这个客户端发送的数据 {     QString sMsg = baArray;     qDebug() << sMsg; }    }

写数据的时候同理