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...