QT實現TCP檔案傳輸
阿新 • • 發佈:2018-12-31
傳輸過程中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();
}
);