VC 網路程式設計 檔案傳輸

2021-06-10 06:50:33 字數 1412 閱讀 7981

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