下面通過tcp協議通訊講解傳送檔案和接收檔案
一、客戶端作為檔案傳送端
1)思路步驟
連線伺服器
當連線成功後會傳送connected訊號
在槽函式中傳送檔案頭資訊
當資料傳送成功後會傳送byteswritten
在槽函式中傳送檔案內容
2)實現**如下
filesend.h
#ifndef filesend_h
#define filesend_h
#include
#include
#include
namespace ui
class
filesend
:public qmainwindow
;#endif
// filesend_h
filesend.cpp
#include
"filesend.h"
#include
"ui_filesend.h"
#include
#include
filesend::
filesend
(qwidget *parent)
:qmainwindow
(parent),ui
(new ui::filesend)
filesend::
~filesend()
//連線伺服器
void filesend::
on_sendbt_clicked()
//通過檔案對話方塊獲取檔案路徑
void filesend::
on_selectbt_clicked()
//傳送檔案頭資訊
void filesend::
send_file_head()
void filesend::
send_file_text()
if(sendsize == filesize)
}
鄙人簡單製作了ui,話不多說,上客戶端的效果圖
接下來就是寫接收端,也就是伺服器
二、伺服器接收檔案
1)思路步驟:
1.建立伺服器, 監聽,當有客戶端連線的時候傳送newconnection訊號,
2.在槽函式中建立與客戶端通訊的套接字qtcpsocket
3.當客戶端傳送資料是qtcpsocket物件會傳送readyread訊號
4.在槽函式中讀取資料
根據檔案大小判斷是否是第一次讀取資料filesize==0
2)實現**如下:
filerecv.h
#ifndef filerecv_h
#define filerecv_h
#include
#include
#include
#include
namespace ui
class
filerecv
:public qmainwindow
;#endif
// filerecv_h
filerecv.cpp
#include
"filerecv.h"
#include
"ui_filerecv.h"
#include
filerecv::
filerecv
(qwidget *parent)
:qmainwindow
(parent),ui
(new ui::filerecv)
//新的客戶端連線的訊號
void filerecv::
new_client()
filerecv::
~filerecv()
void filerecv::
read_data()
//讀檔案內容
if(recvsize < filesize)
if(recvsize == filesize)
}
伺服器接收端的效果圖如下:
客戶端和接收端都已寫完,接下來就是實現檔案傳輸了
三、效果圖如下:
好了,功能全部實現了,下次鄙人會繼續更新的。
tcp檔案傳輸
include include include include include include include include define buffer size 100 1024 1024 define file name max size 512 intmain int argc,char a...
檔案傳輸協議
sftp 安全檔案傳送協議。可以為傳輸檔案提供一種安全的加密方法。sftp 與 ftp 有著幾乎一樣的語法和功能。sftp為ssh的一部份,是一種傳輸檔案到伺服器的安全方式。在ssh軟體包中,已經包含了乙個叫作sftp secure file transfer protocol 的安全檔案傳輸子系統...
檔案傳輸協議
檔案傳送協議ftp file transfer protocol 提供不同種類主機系統 硬 軟體體系等都可以不同 之間的檔案傳輸能力。簡單檔案傳送協議 tftp trivial file transfer protocol ftp是基於 客戶 伺服器 c s 的協議 使用者通過乙個客戶機程式連線至在...