QT的TCP協議編寫檔案傳輸

2021-10-12 00:24:16 字數 2397 閱讀 2866

下面通過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 的協議 使用者通過乙個客戶機程式連線至在...