我们使用socket去获取数据包的时候实际上是把缓存区的数据读取了出来,有时候我们需要读取最近的一条信息,但是接受的的却是缓存区最上边的数据,不能达到实时,主要的解决思路大约有:
- 清空缓存,再读取
- 反复读取,直到缓存区为空
我这里是采用的第二种,代码为:
QByteArray ba = MainWindow::pSocket->read(1116);
QString ba2 = MainWindow::pSocket->read(1116);
while(ba.size()){
ba2 = ba.toHex();
ba = MainWindow::pSocket->read(1116);
}
QString str = ba2;