QT檔案傳輸(簡單版)

2021-09-25 14:58:19 字數 2386 閱讀 1681

qt檔案傳輸(簡單版)

這是用qt寫的一篇簡單的檔案傳輸,只是考慮了黏包問題,並沒有考慮進度條和執行緒問題

pro中加network

標頭檔案:

qtcpsocket通訊套接字

qtcpserver監聽套接字

qfile 檔案操作

qtimer定時器(防止黏包)

函式

fileserver()//建構函式

fileserver()

2.當有客戶端連線時,列印客戶端ip和埠號,及使選擇檔案按鈕可點

void

slotnewconnection()

;

3.選擇檔案

void fileserver::on_buttonselect_clicked()

void fileserver:

:on_buttonselect_clicked()

ui->textbrowser-

>

(filepath)

;//顯示到介面

ui->buttonselect-

>

setenabled

(false);

ui->buttonsend-

>

setenabled

(true);

}else

}

4.傳送標頭檔案 void on_buttonsend_clicked();

void fileserver:

:on_buttonsend_clicked()

else

}

5.傳送真正的檔案 void fileserver::senddata()

void fileserver:

:senddata()

;//每次傳送的檔案大小

len =0;

len = file.

read

(buf, len)

;//讀多少發多少

m_tcpsocket-

>

write

(buf, len)

;//傳送

sendsize += len;

}while

(len >0)

;//當len等於0時,傳送完畢

if(sendsize == filesize)

//檢驗檔案資訊

}

6.定時器槽函式 void fileserver::slotsend()

void fileserver:

:slotsend()

//定時器槽函式

pro中加network標頭檔案:qtcpsocket通訊套接字

qfile 檔案操作

qhostaddress ip位址

qmessagebox提示對話方塊

私有成員:

qtcpsocket *m_tcpsocket;

qfile file;

qstring filename; 檔案名字

qint64 filesize; 檔案大小

qint64 recvsize; 接收長度

bool isstart; 判斷是否是頭

函式

1.建構函式 fileclient()

fileclient:

:fileclient

(qwidget *parent)

:qwidget

(parent),ui

(newui:

:fileclient)

2.連線伺服器 void fileclient::on_buttonconnect_clicked()

void fileclient:

:on_buttonconnect_clicked()

//連線伺服器

3.接收檔案 void fileclient::slotreadyread()

void fileclient:

:slotreadyread()

}else

}}

簡單檔案傳輸

原理 檔案傳輸的原理其實很簡單,服務端先在某個埠監聽,等待客戶端的連線,連線成功後,服務端開啟指定的檔案,然後讀取檔案,再通過建立的套接字傳送給客戶端。如果要實現乙個服務端能與多個客戶端連線,則需要用到多執行緒,下面給出一對一的實現 有興趣的朋友可以用多執行緒實現一對多。程式 include inc...

Qt檔案傳輸小記

傳輸檔案時,簡單的文字檔案可以以字串的形式傳輸。一般的無格式檔案則以二進位制格式傳輸。編寫程式涉及的buffer類有 qfile qbytearray qstring qtcpsocket 如果用其他套接字的話還會用到 char陣列。當傳輸檔案時不可避免取得資料操作,儲存資料型別轉換,寫入資料操作。...

簡單C Tcp檔案傳輸

using system using system.net using system.net.sockets using system.io namespace win 連線使用 tcp 協議的服務端 服務端的ip位址 服務端的埠號 public static socket connectserve...