hoe@
2021-09-27 15:25
采纳率: 100%
浏览 58

Qt文件传输大批量传输测试文件

老师说在程序中加个计数变量和次数变量,都是自动测试,监控的都是文件传输动作,监控到传输结束消息,接着就进行下一次传输,直至所有传输次数完成。这个计数变量和次数变量怎么加在程序中?
这是文件传输的部分程序

img

img

图片转代码服务由CSDN问答提供 功能建议

void server::on_Bl_clicked()
    QStringfilePath=QFileDialog::getOpenFileName(this,打开文件”,../)
     if(filePath,isEmpty()==false)
         OFileInfoinfo=OFileInfo(filePath):
          filename=info,fileName();
          filesize=info,size()
         file.setFileName(filePath)
         boolisok=file.open(QIoDevice::Readonly);
         if(isok==false)
              qDebug()<<“只读文件打开失败”;
          felse
             ui->textEdit->append(QString("%1:%2KB).arg(filename).arg(filesize/1024))
             ui->B1->setEnabled(false)
             ui->B2->setEnabled(true);
    Telsef
     qDebug()<<"文件目录打开出错”;
void server::on_B2_clicked()
    QString str=QString(%1##%2”),arg(filename),arg(filesize);
    gint16len=tcpsocket-write(str..toUtf8().).3 A implicit conversion loses integer
    if(len>②)
      timer.start(20)
    Telsef
         gDebug()<<"文件头发送失败”
void server::sendData()
     gint64len=0;
     dof
          charbuf4*1024]=0
          Len=file.read(buf,sizeof(buf))
          Len=tcpsocket->write(buf,len)3
          sendsize+=len3
    Twhile(len>0)
    if(sendsize==filesize)
         ui->textEdit->append(QString("文件传输完毕));
          ui->B2->setEnabled(false)
            tcpsocket->disconnectFromHost();
            tcpsocket->close()
          file.close();
    1j
  • 好问题 提建议
  • 收藏

1条回答 默认 最新

  • qfl_sdu 2021-09-27 15:37
    已采纳

    在发送文件前,先把数据报的大小发送过去。接收端接收到数据后,记录这个数据报的大小(假设为SS),然后根据这个大小接收数据,当接收到一次数据后(假设接收大小为T),就从SS中减去T(如果SS小于T,那么只用接收数据中的前SS个数据,剩余的则是下一个数据报的内容),这样不断的接收,直到SS等于0为止,SS等于0后表明文件接收完毕,可以开始下一数据的接收。

    已采纳该答案
    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题