ui->serverSendBtn->setEnabled(false); clientConnection = tcpServer->nextPendingConnection(); connect(clientConnection, SIGNAL(bytesWritten(qint64)), this, SLOT(updateClientProgress(qint64))); ui->serverStatusLabel->setText(tr("开始传送文件 %1 !").arg(theFileName)); localFile = new QFile(fileName); if(!localFile->open((QFile::ReadOnly))){ QMessageBox::warning(this, tr("应用程序"), tr("无法读取文件 %1:\n%2") .arg(fileName).arg(localFile->errorString())); return; } TotalBytes = localFile->size(); QDataStream sendOut(&outBlock, QIODevice::WriteOnly); sendOut.setVersion(QDataStream::Qt_4_7); time.start(); // 开始计时 QString currentFile = fileName.right(fileName.size() - fileName.lastIndexOf('/')-1); sendOut << qint64(0) << qint64(0) << currentFile; TotalBytes += outBlock.size(); sendOut.device()->seek(0); sendOut << TotalBytes << qint64((outBlock.size() - sizeof(qint64)*2)); bytesToWrite = TotalBytes - clientConnection->write(outBlock); outBlock.resize(0);这段代码用qt编写,他的作用是什么
时间: 2024-04-25 18:28:02 浏览: 77
金蝶EAS-DEP常用脚本模板.docx
这段代码是一个QT应用程序中传送文件的部分,当服务器端收到客户端的连接请求时,就会执行此函数。该函数会将要发送的文件信息打包成一个数据流QDataStream,然后发送给客户端。其中,QDataStream将数据流序列化,并且设置了版本号为Qt_4_7,sendOut.device()->seek(0)将数据流的指针指向数据流的开头,然后将总字节数和数据块大小写入到数据流中,最后通过clientConnection->write(outBlock)将数据块发送给客户端。在发送数据块之后,服务器端会开始计时,用于计算文件传输的速度。
阅读全文