VC簡單Ftp客戶端的實現(xiàn)課程設(shè)計大作業(yè)(含源文件)_第1頁
VC簡單Ftp客戶端的實現(xiàn)課程設(shè)計大作業(yè)(含源文件)_第2頁
VC簡單Ftp客戶端的實現(xiàn)課程設(shè)計大作業(yè)(含源文件)_第3頁
VC簡單Ftp客戶端的實現(xiàn)課程設(shè)計大作業(yè)(含源文件)_第4頁
VC簡單Ftp客戶端的實現(xiàn)課程設(shè)計大作業(yè)(含源文件)_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

計算機(jī)與通信學(xué)院

綜合設(shè)計試驗報告

簡潔Ftp客戶端的實現(xiàn)

小組成員:

書目

1課設(shè)簡介:...........................................................................4

1.1課程設(shè)計題目....................................................................4

1.2課程設(shè)計小組成員................................................................4

1.3小組成員任務(wù)支配狀況及每人所占工作比例.........................................4

2Ftp客戶端設(shè)計思想:..................................................................4

3Ftp客戶端的各個子模塊主要函數(shù)功能分析及流程圖:....................................5

3.1模塊一:對程序的外觀進(jìn)行修改:(何佳負(fù)責(zé))....................................5

3.1.1添加背景圖...............................................

3.1.2添加時鐘顯示功能........................................

3.1.3修改菜單欄、狀態(tài)欄........................................................5

.3.2模塊二:連接到FTP服務(wù)器功能的實現(xiàn):(何佳負(fù)責(zé))..............................5

3.2.1生成連接對話框..........................................................5

3.2.2連接CMyFlpView::OnConnect()........................................................

3.2.3連接時間voidCMyFtpVicw::OnTimcr................................................

5

3.3模塊三:FTP客戶端文件的顯示查詢實現(xiàn):(孟婕負(fù)責(zé))............................5

3.3.1查詢函數(shù)OnQuary:............................................................................................................5

3.3.2顯示當(dāng)前書目下全部的子書目與文件ListContent:.........................................................6

3.3.3下一級書目函數(shù)OnNextdirectory:................................................................................6

3.3.4上一級書目函數(shù)OnLasttdirectory:...............................................................................7

3.4模塊四:FTP客戶端部分功能實現(xiàn):(李明負(fù)責(zé)).................................8

3.4.1下載函數(shù)OnDownLoad:).................................................8

3.4.2上傳函數(shù)OnUpLoad:.......................................................................................................9

3.4.3刪除函數(shù)OnDelete:..........................................................................................................10

3.4.4重命名函數(shù)OnRename:...................................................................................................10

4主要的數(shù)據(jù)結(jié)構(gòu)分析..................................................................10

5Ftp客戶端的各個子模塊設(shè)計過程及代碼分析:..........................................11

5.1模塊一:對程序的外觀進(jìn)行修改:(何佳負(fù)貨).....................................11

5.1.1.刪除工具欄:..............................................................II

5.1.2.修改菜單:...............................................................11

5.1.3.添加位圖:...............................................................11

5.1.4修改狀態(tài)欄:.............................................................12

5.1.5.變更應(yīng)用程序窗口標(biāo)題:..................................................13

5.2模塊二:連接到FTP服務(wù)器功能的實現(xiàn):(何佳負(fù)責(zé))...............................13

5.2.1插入一個對話框:.........................................................13

5.2.2新建一個類管理對話框:...................................................13

5.2.3CConncctDlg函數(shù):........................................................13

5.2.4.添加public成員變量:..................................................14

5.2.5修改CMyFtpView類的OnConnect函數(shù):....................................14

5.2.6添加響應(yīng)函數(shù):...........................................................15

5.3模塊三:FTP客戶湍主要功能的實現(xiàn)(孟婕負(fù)責(zé))..............................16

5.3.1插入——個對話框資源:.....................................................16

5.3.2建立新類CFtpDIg管理該對話框:...........................................17

5.3.3初始化對話框:...........................................................17

5.3.4查詢函數(shù)OnQuary:......................................................17

5.3.5下一級書目函數(shù)OnNextdirectory:........................................19

5.3.6上一級書目函數(shù)OnLasttdirectory:........................................20

5.4模塊四:FTP客戶端部分功能的實現(xiàn):(李明負(fù)責(zé))...............................21

5.4.1下載函數(shù)OnDownLoad:.................................................21

5.4.2上傳函數(shù)OnUpLoad:....................................................22

5.4.3刪除函數(shù)OnDelete:.....................................................22

5.4.4重命名函數(shù)OnRename:..................................................23

5.4.5退出函數(shù)OnExit:.........................................................24

6.測試程序...........................................................................24

6.1連接操作:.....................................................................24

6.2連接成功后:...................................................................25

7.整個設(shè)計過程中遇到的主要問題:....................................................26

8心得體會:............................................................................26

參考文獻(xiàn);..............................................................................27

相關(guān)工具:..............................................................................27

3Ftp客戶端的各個子模塊主要函數(shù)功能分析及流程圖:

3.1模塊一:對程序的外觀進(jìn)行修改:(何佳負(fù)責(zé))

3.1.1.添加背景圖

為CMyFtpView類窗口,添加一個位圖背景顯示,首先為CmyFtpView添

加WM_ERASEBKGND消息響應(yīng)函數(shù)OnEraseBkgndo該函數(shù)的前提是所需

的位圖己經(jīng)導(dǎo)入資源中。

3.1.2.添加時鐘顯示功能

首先為CMainFrame類,設(shè)置一個定時器,然后為該類響應(yīng)WM_TIMER

消息,在OnTimer函數(shù)中實現(xiàn)功能

3.1.3.修改菜單欄、狀態(tài)欄

在資料對話框或源程序代碼中實行針對性的操作,得以實現(xiàn)

3.2模塊二:連接到FTP服務(wù)器功能的實現(xiàn):(何佳負(fù)責(zé))

3.2.1生成連接對話框

新建一個對話框(CConnectDlg)用來輸入服務(wù)器的站點,用戶名和密碼信

息,然后通過該對話框連接到服務(wù)器.主要的函數(shù)voidCConnectDlg::OnConnect()

實現(xiàn)的功能就是更新當(dāng)前的輸入

3.2.2連接CMyFtpView::OnConnect()

該函數(shù)是菜單項“連接”的響應(yīng)函數(shù),主要生成“連接"CConnectDlg

對話框,從而建立FTP連接.

3.2.3連接時間voidCMyFtpView::OnTimer

對CMyFtpView定時器,所發(fā)送的WM_TIMER消息進(jìn)行響應(yīng),主要用

于監(jiān)視FTP連接是否成功連接。

3.3模塊三:FTP客戶端文件的顯示查詢實現(xiàn):(孟婕負(fù)責(zé))

3.3.1查詢函數(shù)OnQuary:

該函數(shù)是“查詢”按鈕BN_CLICKED的響應(yīng)函數(shù),主要調(diào)用ListContent

函數(shù)為實現(xiàn)查詢的功能

3.3.2顯示當(dāng)前書目下全部的子書目與文件ListContent:

參數(shù)所代表的是要查詢的巾目名,實現(xiàn)的方法主要是通過CftpFileFind類

對象得以實現(xiàn),返回給用戶的信息有:書目或文件名、文件最終修改的時間以及

文件的大小和類型。

流程圖:

本設(shè)磔完整腺料:包括源程序、數(shù)據(jù)庫,

說明書,揭?PPT等族系QQ:1415736481獲取!

專業(yè)定做其它設(shè)計

3.3.3下一級書目函數(shù)OnNextdirectory:

該函數(shù)是“下一級書目"BN_CLICKED的響應(yīng)函數(shù),當(dāng)用戶選中一個子

書目時,點擊按紐就會進(jìn)入該書目,調(diào)用了主要函數(shù):GetCurrentDirectory>

SetCurrentDirectory、ListContento

流程圖:

3.3.4上一級書目函數(shù)OnLasttdirectory:

該函數(shù)是“上一級書目"BN_CLICKED的響應(yīng)函數(shù),點擊按紐就會返回

到該書目的上一級書目,調(diào)用了主要函數(shù):GetCurrentDirectory、

SetCurrentDirectory、ListContent。

流程圖:

專業(yè)定做其它設(shè)計

3.4模塊四:FTP客戶端部分功能實現(xiàn):(李明負(fù)責(zé))

3.4.1下載函數(shù)OnDownLoad:

為了下載列表中的某一個文件,首先推斷是否選中了項目,否則提示沒有選

擇文件,然后得到選擇的項目的類型是否是文件,假如是文件,則得到下載的文件

名,下載文件(調(diào)用CFtpConnect類中的GetFile函數(shù)下載文件)假如選中的是

書目,則彈出對話框,不能下載書目。

流程圖:

本設(shè)磔完整堂科:包括源程序、數(shù)據(jù)庫.

說明書,蜀PPT題系QQ:1415736481獲?。?/p>

專業(yè)定做其它設(shè)計

獲取當(dāng)前選

中項位苴

獲得選擇項類

I值是否為?1型

對話框提示是否為n錄

未選擇

得到想要下栽

文件名

檢我是否寫入文件名

獲得下我文件存不能卜戢

儲路徑,名稱

卜載成功卜.栽失敗

3.4.2上傳函數(shù)OnllpLoad:

上傳函數(shù)首先得獲得想要上傳的本地文件的路徑名和文件名,彈出打開對

話框,找到所要上傳的文件后運用PutFile函數(shù)上傳文件(調(diào)用CFtpConnect

類中的PutFile函數(shù)),等函數(shù)上傳完后提示是否上傳成功,最終調(diào)用查詢函數(shù),

顯示新的文件列表。

流程圖:

3.4.3刪除函數(shù)OnDelete:

刪除函數(shù)首先推斷是否選擇項目,假如沒有,則彈出對話框沒有選擇文件。

選擇了項目后,得到選擇項的類型,假如是書目,則提示不能刪除書目,然后用

m_pConnection->Remove刪除文件并提示是否刪除成功,最終調(diào)用查詢函

數(shù),更新文件列表。

3.4.4重命名函數(shù)OnRename:

重命名文件須要新建立一個對話框(CNewNameDIg),后選擇要重命

名的文件,沒有選擇項目,提示沒有選擇文件,激活控件后,彈出新建的對話框,

輸入新的文件名后用m_pConnection->Rename重新命名文件,最終調(diào)用查

詢函數(shù),更新文件列表。

4主要的數(shù)據(jù)結(jié)構(gòu)分析

CMyFtpView類:

CConnectDlgm_ConDlg;〃用于連接

CFtpDIgm_F(pDlg;〃用于創(chuàng)建一個CFtpDIg對話框,進(jìn)行操作限制

CStringm_FtpWebSite;//服務(wù)器站點,用于輸入服務(wù)器的站點名稱或IP地址

CStringm_UserName;〃登陸服務(wù)器的用戶名稱

CStringm_UserPwd;〃登陸服務(wù)器的密碼

CInternetSession*m_pSession;〃通過CConnectDlg的設(shè)置,得到一個Intemet會話

CFtpConnection*m_pConnection;//通過m_pSession來實現(xiàn)一個FTP連接

CFtpDlg類:

CButtonm_BtnQuery;〃查詢按扭

CButtonm_BtnUpLoad;〃上傳按扭

CButtonm_BtnDownLoad;〃下載按扭

CStringm_NewFileName;〃保存文件的新名稱

CListCtrlm_FtpFile;//用于顯示書目和文件信息

CFtpConnection*m_pConnection;〃代表所建立的FTP連接

CFlpFileFind*m.pFileFind;//CFlpFileFind指針,用于查找文件

5Ftp客戶端的各個子模塊設(shè)計過程及代碼分析:

5.1模塊一:對程序的外觀進(jìn)行修改:(何佳負(fù)責(zé))

5.1.1.刪除工具欄:

在CmainFrame的OnCreate函數(shù)中,刪除與工具欄m_wndToolBar相關(guān)

的代碼,因為在本程序中沒有供應(yīng)相應(yīng)的工具欄。

5.1.2,修改菜單:

將原有的菜單項刪除,增加“連接”和“退出客戶端”子菜單項,(去掉

Pop-up前的勾,同時賦以ID值)

同時,為“連接”和“退出客戶端”子菜單項添加COMMAND消息響應(yīng),

響應(yīng)的類分別為CMyFtpView類和CMainFrame類.響應(yīng)函數(shù)為OnConnect和

OnExit,其中:

OnExil函數(shù)代碼如下:

voidCMainFrame::OnExit()

(

〃退出程序的響應(yīng)函數(shù)

if(IDYES==MessageBox("確定要退出客戶端嗎?,

“警告”,MB_YESNO|MB」CONWARNING))

CFrameWnd::OnClose();

5.1.3.添加位圖背景:

為CMyFtpView類窗口,添加一個位圖背景顯示,首先為CmyFtpView添

力口WM_ERASEBKGND消息響應(yīng)函數(shù),代碼如下:

〃用于添加背景圖

BOOLCMyFtpView::OnEraseBkgnd(CDC*pDC)

CBitmapbitmap;

〃前提IDB_BITMAP2代表的位圖已經(jīng)導(dǎo)入資源中

bitmap.LoadBitm叩(IDB_BITMAP2);CDCdcCompaiiblc;

dcCompatible.CreateCompatibleDC(pDC);

〃創(chuàng)建與當(dāng)前DC(pDC)兼容的DC,先用dcCompatible準(zhǔn)備圖像,再將數(shù)據(jù)復(fù)制到實際DC中

dcCompalible.Selec(Object(&biimap);

CRectrect;

GetCliemRecl(&reci);〃得到目的DC客戶區(qū)大小

BITMAPbmp;//BITMAP結(jié)構(gòu)休,用于保存位圖的信息

bitinap.GetBitmap(&bn甲);

〃將兼容DC中的位圖Copy到目標(biāo)DC中

pDC->StretchBlt(0,0,rect.Width(),rect.Height(),&dcCompatible,0,0,

bmp.bmWidlh,bmp.bmHeighLSRCCOPY);

returntrue;}

修改主窗口的大小,在PreCreateWindow函數(shù)中添加:cs.cx=450;cs.cy=550;

5.1.4修改狀態(tài)欄:

使之只具有時間顯示窗格

首先MainFrame.cpp中修改indicators,如下:

staticLJINTindicators!]=

(

ID_SEPAR/XTOR,//statuslineindicator

IDS_TIMER.

};

同時,在資源視圖的StringTable中添加字符串資源:IDS_TIMERCaption

為:時間

然后,添加時鐘顯示功能:

1>在CMainFrame的OnCreate中添加代碼:

SetTimer(lJ000,NULL)來設(shè)置一個定時器

2>為CMainFrame添加WM.TIMER的峋應(yīng)函數(shù),代碼如下:

voidCMainFrame::OnTimer(UINTnIDEvent)

(

〃用于在狀態(tài)欄顯示當(dāng)前時間

CTimet=CTime::GetCurrentTime();

CStringstr=t.Fonnat("%H:%M:%S");

CClicntDCdc(this);

CSizesz=dc.GetTexiEx【eni(sir);〃得到Su?的長度,用于限制時間窗格

m_wndSta(usBar.SetPane!nfo(IJDS.TIMER^BPS.NORMAL.sz.cx);

m_wndStatusBar.SetPaneText(l,str),/將當(dāng)前時間顯示在時間窗格中

CFraineWnd::OnTimer(nIDEvent);)

5.1.5.變更應(yīng)用程序窗口標(biāo)題:

標(biāo)題改為"FTP客戶端”在CmyFtpApp的Initlnslance函數(shù)中添加代碼:

m_pMainWnd->SetWindowText(uFTP客戶端)

5.2模塊二:連接到FTP服務(wù)器功能的實現(xiàn):(何佳負(fù)責(zé))

5.2.1插入一個對話框:

界面如下:

對各控件進(jìn)行變量設(shè)置,如下圖所示:

ControlIDs:TypeMember

IDC_EDIT1CStringmFtpWebSite

IDC_EDIT2CStringm_UserName

IDC-EDIT3CStrinqmUserPwd

IDOK|

注:在IDC_EDIT3編輯框的Styles選項中,選中Password。

5.2.2新建一個類管理對話框:

在打開ClassWizard時,系統(tǒng)提示是否新建一個類管理對話框,選擇“是”,

類名為:CconnectDlg,基類為:CDialog

5.2.3CConnectDlg函數(shù):

對按鈕“連接”的鼠標(biāo)的點擊,進(jìn)行響應(yīng),函數(shù)如下:

voidCConnectDlg::OnConnect()

UpdateData();

CDialog::OnOK();

5.2.4.添加public成員變量:

首先在CMyFtpView.h中添加public成員變量:

CConnectDigm_ConDlg;〃管理連接對話框

CFtpDlgm-FtpDlg;〃管理CFtpDlg

CStringm_FtpWebSite;//保存Ftp服務(wù)器站點

Cstringm_UserName;〃保存用戶名

CStringm_UserPwd;//保存用戶密碼

CInternetSession*m_pSession;〃用于Internet連接

CFtpConnection*m_pConnection;〃用于建立Ftp連接

注:CFtpDlg為后建立的新類

并在構(gòu)造函數(shù)中初如化:

CMyFtpView;:CMyFtpView()

{

m.FtpWebSite=_T(',U);

m_UserName=_T("");

m.UserPwd=_T("");

m_pSession=NULL;

m_pConnection=NULL;

5.2.5修改CMyFtpVievv類的OnConnect函數(shù):

代碼如下:

voidCMyFtpView::OnConnect()

〃生成一個模態(tài)對話框

if(IDOK==m_ConDlg.DoModal())

m_pConnection=NULL;

m_pSession=NULL:

in_FtpWebSite=in_ConDlg.m_FtpWebSite;

m_UserName=m_ConDlg.m_UserName;

m_UscrPwd=m_ConDlg.m_UscrPwd;

m_pSession=newCInternetSession(AfxGe(AppName(),

1,

PRE_CONFIG_INTERNET_ACCESS);

try

〃試圖建立FTP連接

catch(CIntcrnctExccption*e)

{

〃錯誤處理

e->Delete();

m_pConnection=NULL;

}})

5.2.6添加響應(yīng)函數(shù):

為CMyFtpView類添加WM.TIMER消息的響應(yīng)函數(shù),代碼如下:

voidCMyF(pView::OnTimer(UINTnIDEvent)

(

staticinttimc_out=l;〃用于推斷是否超時

timc_out++;〃每秒增加一次

if(m_pConnection==NULL)

{

CStringstr=”正在連接中

((CMainFrame*)GetParent())->SetMessageText(str);〃在狀態(tài)欄中顯示,連接狀態(tài)

if(timc_out>=60)〃設(shè)置超時的時間為1分鐘

{

((CMainFrame*)GetParcnt())-〉SctMessageTcxt("連接超時!”);

KillTimer(l);〃關(guān)閉定時器

MessageBox("連接超時廣,“超時”.MB_OK);〃提示用戶

)

)

else〃假如連接成功,執(zhí)行如下

{

CStringstr=”連接成功!”;

((CMainFrame*)GetParen(())->SetMessageText(str);

KillTimer(l);

〃連接成功之后,不用定時器來監(jiān)視連接狀況

〃同時跳出操作對話框

//將FTP連接交給CFtpDlg

m_FtpDlg.m_pConnection=m_pConnection;

//創(chuàng)建非模態(tài)對話框CFtpDlg

m_FtpDlg.Create(IDD_DIALOG2,this);

m_FtpDlg.ShowWindow(SW_SHOW);

}

CView::OnTimer(nIDEvent);

5.3模塊三:FTP客戶端主要功能的實現(xiàn)(孟婕負(fù)責(zé))

5.3.1新插入一個對話框資源:

新插入一個對話框資源,界面如下:

己經(jīng)表上工2多哥■

上一級目錄下一級目錄

示.查詢

標(biāo)I

塞下載文件上傳文件

共0

蒯除文件重命名文件

本設(shè)磔完整憾料:包括源程序、數(shù)據(jù)庫,

說明書,暴PPT等族系QQ:1415736481獲?。?/p>

專業(yè)定做其它設(shè)計

各控件變量信息如下圖所示:

ControlIDs:TypeMember

IDCDELETECButtonmBtnDelete

IDCDOWNLOADCButtonmBtnDownLoad

IDCEXIT

IDCLASTDIRECTORY

IDCLISTFILECListCtrlmFtpFile

IlDCNEXTDIRECTORY1

IDC_QUARYCButtonm_BtnQuery

IDCRENAMECButtonmBtnRename

IDC_UPLOADCButtonmBtnUpLoad

5.3.2建立新類CFtpDlg管理該對話框:

建立新類CFtpDlg管理該對話框,基類:CDialog

構(gòu)造函數(shù)代碼:

CFtpDlg::CFtpDlg(CWnd*pParent/*=NULL*/)

:CDialog(CFtpDlg::IDD,pParent)

(

m_pConnection=NULL;

m_pFileFind=NULL;

)

5.3.3初始化對話框:

1.為CFtpDIg添加WM_INITDIALOG響應(yīng)函數(shù)OnlnitDialog,代碼如

下:

BOOLCFtpDlg::OnInitDialog()

{

CDialog::OnInitDialog();

〃設(shè)置CListCtrl對象的屬性

m_FtpFile.SetExtendedStyle(LVS_EX_FULLROWSELECT|

LVS_IZX_GRIDLIN匚S);

〃設(shè)置列

m_FtpFile.InsertColumn(0,“文件名”,LVCFMT_CENTER,200);

m_FtpFile.InsertColumn(l,“日期”,LVCFMT_CENTER,100);

m_FtpFile.InsertColumn(2J字節(jié)數(shù)”,LVCFMT_CENTER,100);

〃初如化CftpFileFind類對象m_pFileFind

m_pFileFind=newCFtpFileFind(m_pConnection);

〃倜用OnQuary函數(shù)直詢FTP服務(wù)器當(dāng)前書目下的書目和文件信息

OnQuary();

returnTRUE;

)

5.3.4查詢函數(shù)OnQuary:

1.為查詢按紐添加BN_CLICKED響應(yīng)函數(shù)OnQuary,代碼如下:

voidCFtpDlg::OnQuary()

{ListContent("*");}

2.手動為CFtpDIg添加函數(shù)ListContent

聲明:voidListContent(LPCTSTR);

定義代碼:

〃用于顯示當(dāng)前書目下全部的子書目與文件

voidCFtpDIg::ListContent(LPCTSTRDirName)

bContinue=m_pFileFind->FindFile(DirName);

if(IbContinue)

〃查找完畢,失敗

m_pFileFind->Close();

m_pFileFind=NULL;

?

CStringstrFileName;

CStringstrFileTime;

CStringstrFileLength;

while(bContinue)

{

bContinue=m_pFileFind->FindNextFile();

strFileName=m_pFileFind->GetFileName();//得至ij文件名

〃得到文件最終一次修改的時間

FILETIMEft;

(

〃假如是書目不求大小,用vDIR>代替

strFileLength="<DIR>";

?

else

{

〃得到文件大小

if(m_pFileFind->GetLength64()<1024)

{

strFileLength.Format("%dB",m_pFileFind->GetLength64());

}

else

<

if(m_pFileFind->GetLength64()<(1024*1024))

strFileLength.Format("%3.3fKB",

(LONGLONG)m_pFileFind->GetLength64()/1024.0);

else

{

if(m_pFileFind->GetLength64()<(1024*1024*1024))

StrFileLength.Format("%3.3fMB",

(LONGLONG)m_pFileFind->GetLength64()/(1024*1024.0));

else

strFileLength.Format("%1.3fGB"Z

(LONGLONG)m_pFileFind->GetLength64()/(1024.0*1024*1024));

)

}

}

inti=0;

m_FtpFile.InsertItem(izstrFileName/O);

m_FtpFile.SetItemText(i,l/StrFileTime);

m_FtpFile.SetItemText(iz2zstrFileLength);

i++;

?

)

5.3.5下一級書目函數(shù)OnNextdirectory:

為〃下一級書目〃按紐添加BN_CLICKED響應(yīng)函數(shù)OnNextdirectory,代

碼如下:

voidCFtpDlg::OnNextdirectory()

{

staticCStringstrCurrentDirectory,strSub;〃聲明2個靜態(tài)變量,

//strCurrentDirectory表示當(dāng)前書目名,strSub表示選定的文件名

〃首先得到當(dāng)前書FL保存在strCurrentDirectory

m_pConnection->GetCurrentDirectory(strCurrentDirectory);

strCurrentDirectory+="/";〃在當(dāng)前取得的書目名后添加

〃得到所選擇的文本,即所要進(jìn)入的下一級書目名

inti=m_FtpFile.GetNextItem(-lzLVNI_SELECTED);〃推斷文件是否選中

strSub=m_FtpFile.GetItemText(i,O);〃將選中的文件名保存至strSub

if(i==-l)

{

AfxMessageBox(“沒有選擇書目!。MB_OK|MBJCONQUESTION);

)

else

{〃推斷是不是書目

if(”vDIR>"!二m_FtpFile.GetItemText(i,2))〃顯示文件的第三列非vDIR>

<

AfxMessageBox("不是子書目!。MB_OK|MB_ICONSTOP);

?

else

{

〃設(shè)置當(dāng)前書目

m_pConnection->SetCurrentDirectory(strCurrentDirectory+strSub);

〃對當(dāng)前書目進(jìn)行查詢,更新ClistCtrl控件的內(nèi)容

ListContent("*");

}

)

?

5.3.6上一級書目函數(shù)OnLasttdirectory:

1.為〃上一級書目〃按紐添加BN_CLICKED響應(yīng)函數(shù)OnLastdirectory,代碼如下:

〃返回上一級書目

voidCFtpDIg::OnLastdirectory()

{

staticCStringstrCurrentDirectory;〃聲明為靜態(tài)變最

m_pConnection->GetCurrentDirectory(strCurrentDirectory);

if(strCurrentDirectory==7")

{

AfxMessageBox(“已經(jīng)是根書目了!。MB_OK|MB_ICONSTOP);

}

else

{

〃調(diào)用函數(shù)GetLastDiretory,得到上一級書Fl名

GetLastDiretory(strCurrentDirectory);

〃設(shè)置當(dāng)前書目為上一級書目

m_pConnection->SetCurrentDirectory(strCurrentDirectory);

〃對當(dāng)前書目進(jìn)行查詢,更新ClistCtrl控件的內(nèi)容

ListContent("*");

?

2.為CFtpDIg類添加一工具函數(shù)GetLastDiretory用于得到上一級書目的名

〃用于得到上一級書目的字符串表示

voidCFtpDIg::GetLastDiretory(CString&str)

{

intLastIndex=O;//定義一個初始整形變量

for(inti=0;i<str.GetLength();i++)〃定義i取得當(dāng)前地址字符串長度

<

if(str.GetAt⑴=='/')〃追溯至數(shù)組的最終一個、'/"

Lastindex=i;〃得到當(dāng)前的數(shù)值、、i〃

)

〃刪除最終一個7'之后的字符串

str=str.Left(LastIndex);〃自帶的left()函數(shù):返回參數(shù)前的全部字符串

if(Lastindex==0)〃當(dāng)追溯的本身即為根書目

str=7";

5.4模塊四:FTP客戶端部分功能的實現(xiàn):(李明負(fù)責(zé))

5.4.1下載函數(shù)OnDownLoad:

為〃下載〃按紐添加BN_CLICKED響應(yīng)函數(shù)OnDownLoad,代碼如下:

voidCFtpDlg::OnDownload()

{

inti=m_FtpFile.GetNextItem(-lzLVNI_SELECTED);

〃先推斷是否已經(jīng)選中文件

if(i==?l)〃假如沒有被選中

{〃彈出對話框提示沒有選擇文件

AfxMessageBox("沒有選擇文件!,MB_OK|MBJCONQUESTION);

)

else

<

〃假如選中了文件,則得到選擇項的類型,推斷是不是文件

CStringstrType=m_FtpFile.GetItemText(i,2);

if(strType!="<DIR>")〃選擇的是文件

{

CStringstrDestName;〃下載后的文件名

CStringstrSourceName;〃原文件名

〃得到所要下載的文件名

strSourceName=m_FtpFile.GetItemlext(i/O);

CFileDialogdlg(rALSE,""zstrSourceName);

〃彈出SAVEAS對話框

if(dlg.DoModal()==IDOK)

{

〃獲得下載文件在本地機(jī)上存儲的路徑和名稱

strDestName=dlg.GetPathName();

〃調(diào)用CFtpConnect類中的GetFile函數(shù)下載文件

if(m_pConnection->GetFile(strSourceNamezstrDestName))

AfxMessageBox(”下載成功!"ZMB_OK|MB_ICONINFORMATION);

else

AfxMessageBox("下載失敗!"ZMB_OK|MB_ICONSTOP);

)

)

else

{

〃選擇的是書目

AfxMessageBox("不能下載書目!\n請重選!。MB_OK|MB_ICONSTOP);

}

)

)

5.4.2上傳函數(shù)OnUpLoad:

為〃上傳〃按紐添加BN.CLICKED響應(yīng)函數(shù)OnUpload,代碼如下:

voidCFtpDlg::OnUpload()

〃獲得當(dāng)前輸入

CStringstrSourceName;〃原文件名

CStringstrDestName;

,,,,,

CFileDialogdlg(TRUE,,

if(dlg.DoModal()==IDOK)

{

〃獲得待上傳的本地機(jī)文件路徑和文件名

strSourceName=dlg.GetPathName();

strDestName=dlg.GetFileName();

〃調(diào)用CFtpConnect類中的PutFile函數(shù)上傳文件

if(m_pConnection->PutFile(strSourceName/strDestName))

AfxMessageBox("上傳成功!=MB_OK|MB」CONINFORMATION);

else

AfxMessageBox("上傳失??!"ZMB_OK|MB_ICONSTOP);

)

〃更新ClistCtrl的內(nèi)容

OnQuary();

}

本設(shè)磔完整腺料:包括源程序、數(shù)據(jù)庫,

說明書,揖*PPT等族系QQ:1415736481獲?。?/p>

專業(yè)定做其它設(shè)計

5.4.3刪除函數(shù)OnDelete:

為〃刪除〃按紐添加BN_CLICKED響應(yīng)函數(shù)OnDelete,代碼如下:

〃刪除選擇的文件

voidCFtpDlg::OnDelete()

{

inti=m_FtpFile.GetNextItem(-l/LVNI_SELECTED);

if(i==-l)

{

AfxMessageBox("沒有選擇文件!”,MB_OK|MBJCONQUESTION);

)

else

{

CStringstrFileName;

strFileName=m_FtpFile.GetItemText(izO);

if("<DIR>"==m_FtpFile.GetItemText(i,2))

{

AfxMessageBox("不能刪除書目!。MB_OK|MB_ICONSTOP);

}

else

{

if(m_pConnection->Remove(strFileName))

AfxMessageBox("冊ij除成功!”,MB_OK|MB」CONINFORMATION);

else

AfxMessageBox(''無法刪除!LMBJDKIMBJCONSTOP);

}

?

OnQuary();

}

5.4.4重命名函數(shù)OnRename:

1、新插入一個對話框資源,界面如下:

控件變量信息如下圖所示:

ControlIDs:TypeMember

IDCEDIT1CStrinqmNewFileName

IDCANCEL

IDOK

本設(shè)磔完整懶料:包括源程序、數(shù)據(jù)庫,

說明書,毒即PT等族系QQ:1415736481獲??!

專業(yè)定做其它設(shè)計

2、改

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論