...(){
forever{
QDataStream input(&tcpSocket);
input.setVersion(QDataStream::Qt_4_3);
int num=results->count();
if (nextBlockSize==0)
{
if (tcpSocket.bytesAvailable()<sizeof(quint16))
{
stateLabel->setText("Bytes available no enough.");
searchBut->setInputMethodEnabled(true);
break;
}
stateLabel->setText("Getting data...");
input>>nextBlockSize;
}
if (nextBlockSize==0xFFFF)
{
closeConnection();
searchBut->setEnabled(true);
stateLabel->setText(tr("Found %1 images").arg(num));
nextBlockSize=0;
break;
}
if (tcpSocket.bytesAvailable()<nextBlockSize)
{
stateLabel->setText("Bytes available no enough.");
searchBut->setInputMethodEnabled(true);
nextBlockSize=0;
break;
}
QString response;
input>>response;
QIcon icon;
input>>icon;
QListWidgetItem *item=new QListWidgetItem();
item->setText(response);
item->setIcon(icon);
results->addItem(item);
nextBlockSize=0;
}
}
BytesAvailable()好像只有8K左右,要传输七八十K的文件。