思路:
服務端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二進位制資料的傳輸,但是這部在我們討論範圍之內,其實現在還只是研究小檔案怎麼傳輸,當檔案很大時,需要用到斷點續傳。好了,要傳輸檔案,首先...