vc 檔案傳輸的實現
2008-07-20 20:33
要實現檔案傳輸最簡單的辦法是寫兩個執行緒,乙個伺服器段的傳送處理執行緒,乙個客戶端的接收處理執行緒。
執行緒處理函式需要宣告為類的靜態成員,由於不可訪問類內部的資料成員,所以引數傳遞裡面最好有個類的指標
伺服器段的傳送處理執行緒:
cfiletransferdlg* pdlg = (cfiletransferdlg*)lpparam;
cfiledialog filedlg(true);
filedlg.m_ofn.lpstrtitle = "
開啟檔案對話方塊";
filedlg.m_ofn.lpstrfilter = "
所有檔案(*.*) /0 *.*/0";
if(idok == filedlg.domodal())
csocket socksrvr;
socksrvr.create(800);
//埠號
socksrvr.listen();
//開始監聽
csocket sockrecv;
socksrvr.accept(sockrecv);
char strsend[19];
strcpy(strsend, "now begin transfer"); //
此處用send向所有網路資源傳送資料,如果用sendto則需要指定ip
sockrecv.send(&strsend,sizeof(strsend));
//傳送連線請求
//strext
存放檔案字尾名
char* strext = new
char[5];
strcpy(strext, filedlg.getfileext());
int length = strlen(strext); //
先傳送資料的長度,再傳送資料本身
sockrecv.send(&length, 4);
sockrecv.send(strext, length);
uint dwread = 1;
while(dwread)
fileopen.close();
sockrecv.close();
afxmessagebox("
傳送完成!"); }
return 1;
客戶端接收檔案執行緒處理函式:
//引數lpparam存放視窗指標
cfiletransferdlg* pdlg = (cfiletransferdlg*)lpparam;
dword dwip; //
獲取ip空間的ip位址
((cipaddressctrl*)pdlg->getdlgitem(idc_ipaddress1))->getaddress(dwip); //
將dword ip轉換為cstring
unsigned
char* pip;
pip = (unsigned
char*)&dwip;
cstring strip;
strip.format("%u.%u.%u.%u",*(pip+3), *(pip+2), *(pip+1), *pip);
csocket sockclient;
sockclient.create(); //
連線 while(!sockclient.connect(strip, 800))
sleep(50);
char strrecv[19]; //
判斷接收到的資料是否為傳輸檔案請求
while(strcmp(strrecv, "now begin transfer"))
cfiledialog filedlg(false);
if(idok == filedlg.domodal())
destfile.close();
sockclient.close();
afxmessagebox("
接收完畢!"); }
return 1;
VC中檔案傳輸
思路 服務端1.首先檔案已二進位制開啟 2.把檔案的屬性傳送給客戶端 3.以位元組的形式讀取檔案中的資料,並迴圈傳送給客戶端直到傳送完畢。客戶端1.收取伺服器端傳送而來的檔案資訊,並建立相應檔案 2.把伺服器傳送而來的資料資訊按位元組形式寫入 該檔案中 3.設定檔案的一些屬性。相應 資料結構 typ...
VC 網路程式設計 檔案傳輸
在socket程式設計中,以前學習的時候都是簡單的字元傳輸,而在實際的應用中,經常需要傳輸檔案,其實網路上的檔案傳輸都是先把資料轉化為位元組流,當然,最底層的是01二進位制資料的傳輸,但是這部在我們討論範圍之內,其實現在還只是研究小檔案怎麼傳輸,當檔案很大時,需要用到斷點續傳。好了,要傳輸檔案,首先...
VC 網路程式設計 檔案傳輸
在socket程式設計中,以前學習的時候都是簡單的字元傳輸,而在實際的應用中,經常需要傳輸檔案,其實網路上的檔案傳輸都是先把資料轉化為位元組流,當然,最底層的是01二進位制資料的傳輸,但是這部在我們討論範圍之內,其實現在還只是研究小檔案怎麼傳輸,當檔案很大時,需要用到斷點續傳。好了,要傳輸檔案,首先...