- void Server::broadcast(ClientInfo* newClientInfo)
- {
- int itemCount=clientInfoList.size();
- QByteArray block;
- QDataStream out(&block, QIODevice::WriteOnly);
- out.setVersion(QDataStream::Qt_4_0);
- out<<quint16(0)<<itemCount;
- for(int i=0;i<itemCount;++i)
- out<<clientInfoList[i]->clientNumber<<clientInfoList[i]->clientLocation;
- out.device()->seek(0);
- out<<qint16(block.size() - sizeof(quint16));
- ClientInfo *cInfo=new ClientInfo();
- foreach(cInfo,clientInfoList){
- cInfo->clientSocket->write(block);
- }
- return;
- }
这段程序实现广播功能,向各个客户端发送数据。
为啥么执行了这个函数后,socket上IO会阻塞,也就是说这个函数执行后,以后从客户端发来的数据就无法读取了,readyRead()信号触发不了。
不执行这个函数,可以一直读客户端发来的数据。