版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、東南大學(xué)自動化學(xué)院實 驗 報 告課程名稱: 信息通信網(wǎng)絡(luò)概論 第 2 次實驗實驗名稱: FTP客戶端通信程序設(shè)計 院 (系): 自動化 專 業(yè): 自動化 姓 名: 徐麗娜 學(xué) 號: 實 驗 室: 實驗組別: 同組人員: 實驗時間: 2013年 12 月 9日評定成績: 審閱教師: 目 錄一實驗?zāi)康暮鸵?2二實驗原理 2三實驗方案與實驗步驟 2四實驗設(shè)備與器材配置 3五實驗記錄 3六實驗總結(jié):7七思考題或討論題 7一、 實驗?zāi)康暮鸵螅?.使用MFC WinInet函數(shù)編寫一個簡單的FTP客戶端程序,實現(xiàn)FTP客戶端軟件的基本功能檢索FTP文件服務(wù)器,上傳和下載。2.理解掌握CInternet
2、Session、 CFtpFileFind類及GetFtpConnection()、FindFile()、 FindNextFile() 、GetFile()、PutFile()函數(shù)的使用,并熟悉FTP的編程的過程。二、 實驗原理:在使用 MFC 編程時,要連接到 FTP 服務(wù)器是一件非常簡單的事情,只需要兩個簡單的步驟,首 先必須建立一個 CinternetSession 對象,用類 CinternetSession 創(chuàng)建并初始化一個或幾個同時存在的 Internet 會話(Session),并描述與代理服務(wù)器的連接(如果有必要的話),如果在程序運行期間需要 保持與 Internet 的廉潔
3、,可以創(chuàng)建一個 CinternetSession 對象作為類 CwinApp 的成員。MFC 中的類 CftpConnection 管理我們與 Internet 服務(wù)器的連接,并直接操作服務(wù)器上的目錄和文 件,F(xiàn)TP 時 MFC 的 WinInet 支持的三個 Internet 功能之一,我們需要先創(chuàng)建一個 CinternetSession 實例 和一個 CftpConnection 對象就可以實現(xiàn)和一個 FTP 服務(wù)器通信,我們不需要直接創(chuàng)建 CftpConnection 對象,而是通過調(diào)用 CinternetSession:GetFtpConnection 來完成這項工作。他創(chuàng)建 CFtp
4、Connection 對 象并返回一個指向該對象的指針。 在 FTP 連接的程序中,主要適用下列 7 個函數(shù): CInternetSession 對象 在創(chuàng)建 CInternetSession 對象時調(diào)用這個成員函數(shù)。CInternetSession 是應(yīng)用程序第一個要 調(diào)用的 Internet 函數(shù),它將初始化內(nèi)部數(shù)據(jù)結(jié)構(gòu),以備將來在應(yīng)用程序中調(diào)用。 GetFtpConnection()函數(shù)。 調(diào) 用 這 個 函 數(shù) 建 立 FTP 連 接 , 并 獲 得 一 個 指 向 CFtpConnection 對 象 的 指 針 , GetFtpConnection 連接到一個 FTP 服務(wù)器,創(chuàng)建
5、并返回指向 CFtpConnection 對象的指針,它不在服務(wù) 器上進(jìn)行任何操作。如果打算讀寫文件,必須進(jìn)行分步操作。 GetFile()函數(shù)。 調(diào)用這個成員函數(shù),可以從 FTP 服務(wù)器區(qū)的文件,并且把文件儲存到本地機(jī)器上。 PutFile()函數(shù)。 調(diào)用這個成員函數(shù)把文件儲存到 FTP 服務(wù)器上。它能夠處理有關(guān)把文件存放到服務(wù)器上的 所有工作。 FTP 文件查找函數(shù)。 調(diào)用這個成員函數(shù)構(gòu)造一個 CftpFileFind 對象。 FindFile()函數(shù)。 調(diào)用這個函數(shù)查找 FTP 文件,調(diào)用它檢索到第一個 FTP 文件后,可以調(diào)用 FindNextFile() 檢索后面的 FTP 文件。
6、FindNextFile()函數(shù)。 調(diào)用這個函數(shù)繼續(xù)查找文件,在調(diào)用任何屬性以前,必須已經(jīng)至少調(diào)用過一次此函數(shù)。 以上函數(shù)的具體使用方法可以參見 MSDN。三、實驗方案與實驗步驟:主要步驟:1.創(chuàng)建一個internet會話。 CInternetSession* pSession; pSession=new CInternetSession(AfxGetAppName(),1, PRE_CONFIG_INTERNET_ACCESS);2.建立與FTP服務(wù)器的連接。 CFtpConnection* pConnection; pConnection=pSession-GetFtpConnection
7、(m_strFtpSite, m_strName,m_strPwd);3、如果連接成功,獲得當(dāng)前登陸的缺省目錄下所有的文件和目錄名稱。 CFtpFileFind* pFileFind; pFileFind=new CFtpFileFind(pConnection); Find()4、下載文件或上傳文件。 OnDownload() OnUpload()5、關(guān)閉連接。四、實驗設(shè)備與器材配置:1實驗室具有基于TCP/IP協(xié)議的Windows網(wǎng)絡(luò)硬軟件環(huán)境;2微機(jī) 1臺。五、實驗記錄: 1.連接:void CFtpDlg:OnConnect() CString strConnect;m_BtnConn
8、ect.GetWindowText(strConnect);pSession=NULL;pConnection=NULL;pFileFind=NULL; UpdateData(TRUE); /獲得當(dāng)前輸入if(m_strFtpSite.IsEmpty()/判斷ftp地址欄是否為空AfxMessageBox(請輸入ftp服務(wù)器地址! );return;while(m_ListFile.GetCount()!=0) /清除列表框內(nèi)容m_ListFile.DeleteString(0);if(strConnect=連接) pSession=new CInternetSession(AfxGetApp
9、Name(),/創(chuàng)建Internet會話PRE_CONFIG_INTERNET_ACCESS);try pConnection=pSession-GetFtpConnection(m_strFtpSite, /試圖建立FTP連接m_strName,m_strPwd);catch (CInternetException* e) /錯誤處理e-Delete();pConnection=NULL;AfxMessageBox(連接錯誤,請檢查地址和用戶名密碼);return;if (pConnection!=NULL)/創(chuàng)建CFtpFileFind對象/傳遞CFtpConnection對象的指針pFi
10、leFind=new CFtpFileFind(pConnection);if(Find()m_BtnConnect.SetWindowText(斷開連接);if(m_strName=)m_strName=_T(anonymous);m_strPwd=_T(anonymous);UpdateData(FALSE);elseAfxMessageBox(不能正確初始化!);elseif (pConnection!=NULL)pConnection-Close();delete pConnection;if (pFileFind!=NULL)pFileFind-Close();delete pFil
11、eFind;delete pSession;m_BtnConnect.SetWindowText(連接);若連接出現(xiàn)錯誤,則會顯示消息框“連接錯誤”2.上傳若沒有選擇文件,則會出現(xiàn)消息框:“選擇文件”若上傳成功,則出現(xiàn)消息框:“上傳成功”同時還有上傳失敗的消息框。void CFtpDlg:OnUpload() UpdateData(TRUE); /獲得當(dāng)前輸入m_EditFtp.EnableWindow(FALSE); /禁止用來輸入的文本和編輯框控件m_EditName.EnableWindow(FALSE);m_EditPwd.EnableWindow(FALSE);m_StaFtp.En
12、ableWindow(FALSE);m_StaName.EnableWindow(FALSE);m_StaPwd.EnableWindow(FALSE);m_BtnConnect.EnableWindow(FALSE); /禁止查詢按鈕CString strSourceName;CString strDestName;CFileDialog dlg(TRUE,*.*);if(dlg.DoModal()=IDOK)strSourceName = dlg.GetPathName();/獲得待上傳得本地機(jī)文件的路徑和名稱strDestName = dlg.GetFileName();if(pConn
13、ection-PutFile(strSourceName,strDestName) /調(diào)用函數(shù)上傳文件AfxMessageBox(上傳成功! ,MB_OK|MB_ICONINFORMATION);while(m_ListFile.GetCount()!=0)m_ListFile.DeleteString(0);Find();elseAfxMessageBox(上傳失敗! ,MB_OK|MB_ICONSTOP);elseAfxMessageBox(請選擇文件! ,MB_OK|MB_ICONSTOP); /文件選擇錯誤m_EditFtp.EnableWindow(TRUE); /激活用來輸入的文本
14、和編輯框控件m_EditName.EnableWindow(TRUE);m_EditPwd.EnableWindow(TRUE);m_StaFtp.EnableWindow(TRUE);m_StaName.EnableWindow(TRUE);m_StaPwd.EnableWindow(TRUE);m_BtnConnect.EnableWindow(TRUE);/激活查詢按鈕3.下載 下載時也出現(xiàn)一系列對話框用來提示錯誤或非法操作。void CFtpDlg:OnDownload() UpdateData(TRUE); /獲得當(dāng)前輸入int nSel = m_ListFile.GetCurSel
15、();CString strSourceName;m_ListFile.GetText(nSel,strSourceName); /獲得用戶在列表框中的選擇if(strSourceName.GetAt(0)!=) /選擇的是文件CString strDestName;CFileDialog dlg(FALSE,strSourceName);if(dlg.DoModal()=IDOK)strDestName = dlg.GetPathName();/獲得下載文件在本地機(jī)上存儲的路徑和名稱if(pConnection-GetFile(strSourceName,strDestName) /下載文件
16、AfxMessageBox(下載成功! ,MB_OK|MB_ICONINFORMATION);m_BtnDownLoad.EnableWindow(FALSE); /禁用下載按鈕elseAfxMessageBox(下載失敗! ,MB_OK|MB_ICONSTOP);elseif(strSourceName=)AfxMessageBox(請寫入文件名! ,MB_OK|MB_ICONSTOP);else AfxMessageBox(不能下載目錄! ,MB_OK|MB_ICONSTOP);/選擇的是目錄m_BtnUpLoad.EnableWindow(TRUE); /激活查詢和上傳按鈕m_EditF
17、tp.EnableWindow(TRUE); /激活用來輸入的文本和編輯框控件m_EditName.EnableWindow(TRUE);m_EditPwd.EnableWindow(TRUE);m_StaFtp.EnableWindow(TRUE);m_StaName.EnableWindow(TRUE);m_StaPwd.EnableWindow(TRUE);六、實驗總結(jié):通過此次實驗,我使用MFC WinInet函數(shù)編寫一個簡單的FTP客戶端程序,實現(xiàn)FTP客戶端軟件的基本功能檢索FTP文件服務(wù)器,上傳和下載。在實驗中,我初步了解了CInternetSession、 CFtpFileFi
18、nd類及GetFtpConnection()、FindFile()、 FindNextFile() 、GetFile()、PutFile()函數(shù)的使用,并學(xué)習(xí)了FTP的編程的過程。而且通過這個實驗讓我對MFC的搭建也更加熟悉,溫習(xí)了以前學(xué)習(xí)的代碼。七、思考題或討論題1.WinInet有什么作用?答:為了開發(fā)Internet客戶端程序。MFC類庫提供了專門的 Win32 Internet 擴(kuò)展接口,也就是WinInet。MFC將WinInet封裝在一個標(biāo)準(zhǔn)的、易于使用的類集合中。在編寫WinInet客戶端程序時,你既可以直接調(diào)用Win32函數(shù),也可以使用WinInet類庫。 WinInet(Windows Internet)API幫助程序員使用三個常見的Internet協(xié)議,這三個協(xié)議是:用于World Wide Web萬維網(wǎng)的超文本傳輸協(xié)議(HTTP:Hypertext Transfer Protocol)、文件傳輸協(xié)議(FTP:File Transfer P
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 株洲市房屋買賣合同中的合同違約調(diào)解
- 清算后期服務(wù)協(xié)議
- 小紅書:教你打造小紅書藍(lán)V專業(yè)號【互聯(lián)網(wǎng)】【藍(lán)V運營】
- 九年級化學(xué)上冊 第六單元 碳和碳的化合物 課題1 金剛石、石墨、C60教案 (新版)新人教版
- 二年級體育上冊 2.2出升的太陽教案
- 2024秋八年級英語下冊 Module 1 Feelings and impressions Unit 3 Language in use教案含教學(xué)反思(新版)外研版
- 2024-2025學(xué)年學(xué)年高中英語 Module2 A job worth doing教案 外研版必修5
- 2024-2025學(xué)年高中英語下學(xué)期第18周教學(xué)設(shè)計
- 2024秋八年級英語上冊 Unit 7 Will people have robots教案 (新版)人教新目標(biāo)版
- 2023七年級地理上冊 第一章 地球和地圖 第四節(jié) 地形圖的判讀說課稿 (新版)新人教版
- 儲氣罐保養(yǎng)記錄表
- 計算思維與程序設(shè)計
- 境外安全管理培訓(xùn)(海外)課件
- 《應(yīng)對同伴壓力》課件
- 主題漫展策劃方案
- 小學(xué)生自主學(xué)習(xí)能力培養(yǎng)及教師指導(dǎo)策略
- 振動試驗及振動試驗設(shè)備培訓(xùn)
- 高二數(shù)學(xué)雙曲線試題(有答案)
- 財務(wù)管理的數(shù)字化轉(zhuǎn)型實施方案
- 線上廚藝大賽投票方案
- 家長課程:怎樣提升孩子的自護(hù)技能
評論
0/150
提交評論