在socket程式設計中,以前學習的時候都是簡單的字元傳輸,而在實際的應用中,經常需要傳輸檔案,其實網路上的檔案傳輸都是先把資料轉化為位元組流,當然,最底層的是01二進位制資料的傳輸,但是這部在我們討論範圍之內,其實現在還只是研究小檔案怎麼傳輸,當檔案很大時,需要用到斷點續傳。
好了,要傳輸檔案,首先先要計算出伺服器端檔案的大小,然後開啟資料,讀入到緩衝區中,首先傳送檔案的大小給客戶端,然後客戶端根據收到的檔案大小,重新建立檔案。
伺服器端**如下:
[cpp]
handle hfile;
hfile = createfile(_t("d:\\學習資料\\複試上機題目.rar"), // open myfile.txt
generic_read, // open for reading
file_share_read, // share for reading
null, // no security
open_existing, // existing file only
file_attribute_normal, // normal file
null); // no attr. template
if (hfile == invalid_handle_value)
dword dwfilesize = 0;
dwfilesize = getfilesize(hfile,null);
byte *pbuffer = new byte[dwfilesize];
dword dwreadsize = 0; //檔案長度
::readfile(hfile,pbuffer,dwfilesize,&dwreadsize,null);
send(sockconn,(const char*)&dwreadsize,4,0); //傳送檔案長度
send(sockconn,reinterpret_cast(pbuffer),dwreadsize,null); //傳送資料檔案
closehandle(hfile); //關閉檔案
或者客戶端重建檔案的**如下:
[cpp]
file *fp = fopen("recv.rar","w+b");
fwrite(data,ndatalen,1,fp);
fclose(fp);
但是,就目前的這**,還只適合傳輸資料量比較小的檔案,當檔案比較大時,就不能忍受了,所以就必須研究斷點續傳,以後研究吧。本文只適合初學者,大牛們就當是**。這只是最基本的傳輸**,後面會逐步完善。
轉於:
VC 網路程式設計 檔案傳輸
在socket程式設計中,以前學習的時候都是簡單的字元傳輸,而在實際的應用中,經常需要傳輸檔案,其實網路上的檔案傳輸都是先把資料轉化為位元組流,當然,最底層的是01二進位制資料的傳輸,但是這部在我們討論範圍之內,其實現在還只是研究小檔案怎麼傳輸,當檔案很大時,需要用到斷點續傳。好了,要傳輸檔案,首先...
VC檔案傳輸
vc 檔案傳輸的實現 2008 07 20 20 33 要實現檔案傳輸最簡單的辦法是寫兩個執行緒,乙個伺服器段的傳送處理執行緒,乙個客戶端的接收處理執行緒。執行緒處理函式需要宣告為類的靜態成員,由於不可訪問類內部的資料成員,所以引數傳遞裡面最好有個類的指標 伺服器段的傳送處理執行緒 cfiletra...
VC中檔案傳輸
思路 服務端1.首先檔案已二進位制開啟 2.把檔案的屬性傳送給客戶端 3.以位元組的形式讀取檔案中的資料,並迴圈傳送給客戶端直到傳送完畢。客戶端1.收取伺服器端傳送而來的檔案資訊,並建立相應檔案 2.把伺服器傳送而來的資料資訊按位元組形式寫入 該檔案中 3.設定檔案的一些屬性。相應 資料結構 typ...