结论:
QTcpSocket.readAll函数会将管道中的数据全部取出并将管道清空
要想不清空并取出,应使用QTcpSocket.peek(len)
注意场景!!!
在QTcpSocket传输图片时会出现此问题
tcpSocket->readAll//或者read(len)
QDataStream in(tcpSocket);
先读取之后,后面获取的图片数据大小会越来越大(不清楚为什么),导致图始终无法解码出来
如何避免:
if(clientConnection->bytesAvailable() >0)
{
QByteArray array=clientConnection->peek(len);
}
if(array=="等于你普通的数据的一些要求")
{
//普通的数据
clientConnection->readAll();//在这里readAll与图片的数据不冲突
}
else
{
//图片数据
QDataStream in(tcpSocket);
...
}