東南大學計網(wǎng)實驗_第1頁
東南大學計網(wǎng)實驗_第2頁
東南大學計網(wǎng)實驗_第3頁
東南大學計網(wǎng)實驗_第4頁
東南大學計網(wǎng)實驗_第5頁
已閱讀5頁,還剩3頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上東南大學自動化學院實 驗 報 告課程名稱: 信息通信網(wǎng)絡(luò)概論 第 2 次實驗實驗名稱: FTP客戶端通信程序設(shè)計 院 (系): 自動化 專 業(yè): 自動化 姓 名: 徐麗娜 學 號: 實 驗 室: 實驗組別: 同組人員: 實驗時間: 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.

2、理解掌握CInternetSession、 CFtpFileFind類及GetFtpConnection()、FindFile()、 FindNextFile() 、GetFile()、PutFile()函數(shù)的使用,并熟悉FTP的編程的過程。二、 實驗原理:在使用 MFC 編程時,要連接到 FTP 服務(wù)器是一件非常簡單的事情,只需要兩個簡單的步驟,首 先必須建立一個 CinternetSession 對象,用類 CinternetSession 創(chuàng)建并初始化一個或幾個同時存在的 Internet 會話(Session),并描述與代理服務(wù)器的連接(如果有必要的話),如果在程序運行期間需要 保持與

3、 Internet 的廉潔,可以創(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 來完成

4、這項工作。他創(chuàng)建 CFtpConnection 對 象并返回一個指向該對象的指針。 在 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 連接到

5、一個 FTP 服務(wù)器,創(chuàng)建并返回指向 CFtpConnection 對象的指針,它不在服務(wù) 器上進行任何操作。如果打算讀寫文件,必須進行分步操作。 GetFile()函數(shù)。 調(diào)用這個成員函數(shù),可以從 FTP 服務(wù)器區(qū)的文件,并且把文件儲存到本地機器上。 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() 檢

6、索后面的 FTP 文件。 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->

7、;GetFtpConnection(m_strFtpSite, m_strName,m_strPwd);3、如果連接成功,獲得當前登陸的缺省目錄下所有的文件和目錄名稱。 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微機 1臺。五、實驗記錄: 1.連接:void CFtpDlg:OnConnect() CString str

8、Connect;m_BtnConnect.GetWindowText(strConnect);pSession=NULL;pConnection=NULL;pFileFind=NULL; UpdateData(TRUE); /獲得當前輸入if(m_strFtpSite.IsEmpty()/判斷ftp地址欄是否為空AfxMessageBox("請輸入ftp服務(wù)器地址! ");return;while(m_ListFile.GetCount()!=0) /清除列表框內(nèi)容m_ListFile.DeleteString(0);if(strConnect="連接"

9、) pSession=new CInternetSession(AfxGetAppName(),/創(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

10、(pConnection!=NULL)/創(chuàng)建CFtpFileFind對象/傳遞CFtpConnection對象的指針pFileFind=new CFtpFileFind(pConnection);if(Find()m_BtnConnect.SetWindowText("斷開連接");if(m_strName="")m_strName=_T("anonymous");m_strPwd=_T("anonymous");UpdateData(FALSE);elseAfxMessageBox("不能正確初始化!&

11、quot;);elseif (pConnection!=NULL)pConnection->Close();delete pConnection;if (pFileFind!=NULL)pFileFind->Close();delete pFileFind;delete pSession;m_BtnConnect.SetWindowText("連接");若連接出現(xiàn)錯誤,則會顯示消息框“連接錯誤”2.上傳若沒有選擇文件,則會出現(xiàn)消息框:“選擇文件”若上傳成功,則出現(xiàn)消息框:“上傳成功”同時還有上傳失敗的消息框。void CFtpDlg:OnUpload() Upd

12、ateData(TRUE); /獲得當前輸入m_EditFtp.EnableWindow(FALSE); /禁止用來輸入的文本和編輯框控件m_EditName.EnableWindow(FALSE);m_EditPwd.EnableWindow(FALSE);m_StaFtp.EnableWindow(FALSE);m_StaName.EnableWindow(FALSE);m_StaPwd.EnableWindow(FALSE);m_BtnConnect.EnableWindow(FALSE); /禁止查詢按鈕CString strSourceName;CString strDestName

13、;CFileDialog dlg(TRUE,"","*.*");if(dlg.DoModal()=IDOK)strSourceName = dlg.GetPathName();/獲得待上傳得本地機文件的路徑和名稱strDestName = dlg.GetFileName();if(pConnection->PutFile(strSourceName,strDestName) /調(diào)用函數(shù)上傳文件AfxMessageBox("上傳成功! ",MB_OK|MB_ICONINFORMATION);while(m_ListFile.Get

14、Count()!=0)m_ListFile.DeleteString(0);Find();elseAfxMessageBox("上傳失敗! ",MB_OK|MB_ICONSTOP);elseAfxMessageBox("請選擇文件! ",MB_OK|MB_ICONSTOP); /文件選擇錯誤m_EditFtp.EnableWindow(TRUE); /激活用來輸入的文本和編輯框控件m_EditName.EnableWindow(TRUE);m_EditPwd.EnableWindow(TRUE);m_StaFtp.EnableWindow(TRUE);m

15、_StaName.EnableWindow(TRUE);m_StaPwd.EnableWindow(TRUE);m_BtnConnect.EnableWindow(TRUE);/激活查詢按鈕3.下載 下載時也出現(xiàn)一系列對話框用來提示錯誤或非法操作。void CFtpDlg:OnDownload() UpdateData(TRUE); /獲得當前輸入int nSel = m_ListFile.GetCurSel();CString strSourceName;m_ListFile.GetText(nSel,strSourceName); /獲得用戶在列表框中的選擇if(strSourceName

16、.GetAt(0)!='') /選擇的是文件CString strDestName;CFileDialog dlg(FALSE,"",strSourceName);if(dlg.DoModal()=IDOK)strDestName = dlg.GetPathName();/獲得下載文件在本地機上存儲的路徑和名稱if(pConnection->GetFile(strSourceName,strDestName) /下載文件AfxMessageBox("下載成功! ",MB_OK|MB_ICONINFORMATION);m_BtnDow

17、nLoad.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_EditFtp.Enab

18、leWindow(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、 CFtpFileFind類及Get

19、FtpConnection()、FindFile()、 FindNextFile() 、GetFile()、PutFile()函數(shù)的使用,并學習了FTP的編程的過程。而且通過這個實驗讓我對MFC的搭建也更加熟悉,溫習了以前學習的代碼。七、思考題或討論題1.WinInet有什么作用?答:為了開發(fā)Internet客戶端程序。MFC類庫提供了專門的 Win32 Internet 擴展接口,也就是WinInet。MFC將WinInet封裝在一個標準的、易于使用的類集合中。在編寫WinInet客戶端程序時,你既可以直接調(diào)用Win32函數(shù),也可以使用WinInet類庫。 WinInet(Windows Internet)API幫助程序員使用三個常見的Internet協(xié)議,這三個協(xié)議是:用于World Wide Web萬維網(wǎng)的超文本傳輸協(xié)議(HTTP:Hypertext Transfer Protocol)、文件傳輸

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論