1. 程式人生 > >QT實現TCP檔案傳輸

QT實現TCP檔案傳輸

傳輸過程中TCP的使用見上一個帖子,介紹一下檔案傳輸

//主要用到了以下標頭檔案
#include <QFileDialog>
//該函式返回對話方塊下選擇檔案目錄
QString filePath=QFileDialog::getOpenFileName(this,"open","../");

#include <QDebug>
用於排錯

#include <QFileInfo>
 QFileInfo info(filePath); //通過絕對路徑或者相對路徑獲取檔案資訊
 fileName=info.fileName();//獲取檔案大小和名字
 fileSize=info.size();

#include <QFile>   //檔案類
QFile file;
file.setFileName(filePath);  //通過絕對路徑指定檔案

需要注意的是,在檔案傳輸的過程中,首先由伺服器傳送一個檔案資訊(檔案大小和名字)給客戶端,然後選擇檔案傳送,但是頭部和資料部分可能會出現連包問題,所以用了一個定時器,在頭部資訊傳送後20ms再發送資料部分。

#include<QTimer>

//槽函式:

connect(&timer,&QTimer::timeout,
            [=]()
    {
        //g關閉定時器
        timer.stop();
        //傳送檔案
        sendDate();
    }

            );