VC中檔案傳輸

2022-05-01 13:12:11 字數 2610 閱讀 1462

思路:

服務端1.首先檔案已二進位制開啟;2.把檔案的屬性傳送給客戶端;3.以位元組的形式讀取檔案中的資料,並迴圈傳送給客戶端直到傳送完畢。

客戶端1.收取伺服器端傳送而來的檔案資訊,並建立相應檔案;2.把伺服器傳送而來的資料資訊按位元組形式寫入 該檔案中;3.設定檔案的一些屬性。

相應**:

資料結構:

typedef struct _socket_stream_file_info socket_stream_file_info, * psocket_stream_file_info;

服務端:

void cserverdlg::onbuttonlicsen()

csocket socksrvr;

socksrvr.create(800);

socksrvr.listen();

csocket sockrecv;

socksrvr.accept(sockrecv);

socket_stream_file_info streamfileinfo;

win32_find_data findfiledata;

findclose(findfirstfile(dlg.getpathname(),&findfiledata));

memset(&streamfileinfo,0,sizeof(socket_stream_file_info));

strcpy(streamfileinfo.szfiletitle,myfile.getfiletitle());

streamfileinfo.dwfileattributes = findfiledata.dwfileattributes;

streamfileinfo.ftcreationtime = findfiledata.ftcreationtime;

streamfileinfo.ftlastaccesstime = findfiledata.ftlastaccesstime;

streamfileinfo.ftlastwritetime = findfiledata.ftlastwritetime;

streamfileinfo.nfilesizehigh = findfiledata.nfilesizehigh;

streamfileinfo.nfilesizelow = findfiledata.nfilesizelow;

sockrecv.send(&streamfileinfo,sizeof(socket_stream_file_info));

uint dwread=0;

while(dwreadsockrecv.close();

afxmessagebox("傳送完畢!");

}客戶端:

void cclientdlg::onbuttonsend()

else

}afxsocketinit(null);

csocket sockclient;

sockclient.create();

cstring szip;

getdlgitemtext(idc_edit_ipaddress,szip);

if(!sockclient.connect((lpctstr)szip, 800))

socket_stream_file_info streamfileinfo;

sockclient.receive(&streamfileinfo,sizeof(socket_stream_file_info));

cstring strtmp=streamfileinfo.szfiletitle;

cstring strpath=path;

strpath+="\\";

strpath+=strtmp;

strcpy(streamfileinfo.szfiletitle,strpath.getbuffer(strpath.getlength()));

cfile destfile(streamfileinfo.szfiletitle, cfile::modecreate | cfile::modewrite | cfile::typebinary);

uint dwread = 0;

while(dwreaduint dw=sockclient.receive(data, 1024);

destfile.write(data, dw);

dwread+=dw;

if (data!=null)

}setfiletime((handle)destfile.m_hfile,&streamfileinfo.ftcreationtime,

&streamfileinfo.ftlastaccesstime,&streamfileinfo.ftlastwritetime);

destfile.close();

setfileattributes(streamfileinfo.szfiletitle,streamfileinfo.dwfileattributes);

sockclient.close();

afxmessagebox("接收完畢!");

}

VC檔案傳輸

vc 檔案傳輸的實現 2008 07 20 20 33 要實現檔案傳輸最簡單的辦法是寫兩個執行緒,乙個伺服器段的傳送處理執行緒,乙個客戶端的接收處理執行緒。執行緒處理函式需要宣告為類的靜態成員,由於不可訪問類內部的資料成員,所以引數傳遞裡面最好有個類的指標 伺服器段的傳送處理執行緒 cfiletra...

VC 網路程式設計 檔案傳輸

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

VC 網路程式設計 檔案傳輸

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