• 4388阅读
  • 0回复

QTcpSocket如何实现大文件分块传输啊? [复制链接]

上一主题 下一主题
离线linshu87
 

只看楼主 倒序阅读 楼主  发表于: 2010-04-12
...(){
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的文件。
快速回复
限100 字节
 
上一个 下一个