VC 網路程式設計 檔案傳輸

2021-06-09 19:44:38 字數 2288 閱讀 4200

在socket程式設計中,以前學習的時候都是簡單的字元傳輸,而在實際的應用中,經常需要傳輸檔案,其實網路上的檔案傳輸都是先把資料轉化為位元組流,當然,最底層的是01二進位制資料的傳輸,但是這部在我們討論範圍之內,其實現在還只是研究小檔案怎麼傳輸,當檔案很大時,需要用到斷點續傳。

好了,要傳輸檔案,首先先要計算出伺服器端檔案的大小,然後開啟資料,讀入到緩衝區中,首先傳送檔案的大小給客戶端,然後客戶端根據收到的檔案大小,重新建立檔案。

伺服器端**如下:

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); //關閉檔案

客戶端**如下:

int ndatalen = 0;

recv(sockclient,(char*)&ndatalen,4,0);

printf("%d\n",ndatalen);

byte *data = new byte[ndatalen];

recv(sockclient,(char*)data,ndatalen,0);

handle hfile;

hfile = createfile("recv.rar", // open myfile.txt

generic_write, // open for reading

file_share_write, // share for reading

null, // no security

create_new, // existing file only

file_attribute_normal, // normal file

null); // no attr. template

if (hfile == invalid_handle_value)

writefile(

hfile, // handle to file

data, // data buffer

ndatalen, // number of bytes to write

(lpdword)&ndatalen, // number of bytes written

);

或者客戶端重建檔案的**如下:

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