• 3476阅读
  • 1回复

TCP问题 [复制链接]

上一主题 下一主题
离线huangweibuct
 

只看楼主 倒序阅读 楼主  发表于: 2010-05-12
— 本帖被 XChinux 从 General Qt Programming 移动到本区(2011-01-02) —
  1. void Server::broadcast(ClientInfo* newClientInfo)
  2. {
  3.     int itemCount=clientInfoList.size();
  4.     QByteArray block;
  5.     QDataStream out(&block, QIODevice::WriteOnly);
  6.     out.setVersion(QDataStream::Qt_4_0);
  7.     out<<quint16(0)<<itemCount;
  8.     for(int i=0;i<itemCount;++i)
  9.     out<<clientInfoList[i]->clientNumber<<clientInfoList[i]->clientLocation;
  10.     out.device()->seek(0);
  11.     out<<qint16(block.size() - sizeof(quint16));
  12.     ClientInfo *cInfo=new ClientInfo();
  13.     foreach(cInfo,clientInfoList){
  14.         cInfo->clientSocket->write(block);
  15.     }
  16.     return;
  17. }

这段程序实现广播功能,向各个客户端发送数据。
为啥么执行了这个函数后,socket上IO会阻塞,也就是说这个函数执行后,以后从客户端发来的数据就无法读取了,readyRead()信号触发不了。
不执行这个函数,可以一直读客户端发来的数据。
离线huangweibuct

只看该作者 1楼 发表于: 2010-05-13
自己顶自己顶
快速回复
限100 字节
 
上一个 下一个