




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第24章WinInet編程很多情況下,開發(fā)者需要編寫Internet客戶端程序,使用Internet協(xié)議以訪問網(wǎng)絡(luò)上的服務(wù)器信息。WinInet(Win32InternetExtensions)為編寫Internet客戶端提供專門的接口。WinInet是比Winsock更高層的接口,它只適合于編寫HTTP、FTP和Gopher三種客戶端應(yīng)用程序。VisualC++提供了兩種使用WinInet的方法,一種是直接調(diào)用Win32Internet函數(shù),另一種是使用MFCWinInet類來使用WinInet。本章將對詳細(xì)介紹WInInet相關(guān)的函數(shù)與類的使用方法。24.1WinInetAPI簡介WinInet接口提供了對普通Internet協(xié)議的訪問,這些協(xié)議包括:HTTP、FTP和Gopher。在編寫HTTP、FTP和Gopher客戶端應(yīng)用程序時,WinInet的性能遠(yuǎn)遠(yuǎn)超過了WinSock,使用起來更方便、更專業(yè)化。在使用WinInet開發(fā)Internet應(yīng)用程序時,開發(fā)者不必了解各種協(xié)議的細(xì)節(jié)就可以編寫出高水平的Internet客戶端。本節(jié)將對WinInetAPI函數(shù)進(jìn)行詳細(xì)的介紹。24.1.1通用WinInetAPI函數(shù)通用WinInetAPI函數(shù)提供對所有Internet協(xié)議的支持,包括HTTP、FTP和Gopher。此外還包括對URL的處理,對Cookie的存取和設(shè)置。表24.1列出了常用的WinInetAPI函數(shù)。24.1.2HTTP函數(shù)HTTP函數(shù)負(fù)責(zé)HTTP文件和目錄的管理和瀏覽,提供HTTP規(guī)范的標(biāo)準(zhǔn)接口。表24.2列出了WinInet相關(guān)的HTTP函數(shù)。24.1.3FTP函數(shù)FTP函數(shù)負(fù)責(zé)FTP文件、目錄的管理和瀏覽;提供FTP規(guī)范的標(biāo)準(zhǔn)接口。表24.3列出了WinInet相關(guān)的FTP函數(shù)。24.1.4Gopher函數(shù)Gopher函數(shù)主要用于控制InternetGopher應(yīng)用程序的創(chuàng)建和使用,表24.4列出了WinInet相關(guān)的Gopher函數(shù)。24.2MFCWinInet類Microsoft對WinInetAPI函數(shù)進(jìn)行了封裝,使用戶開發(fā)Internet客戶端更加容易。MFC共提供了13個WinInet類,它們實現(xiàn)了一系列Internet的訪問功能。本節(jié)將對這些類進(jìn)行詳細(xì)介紹。24.2.1CInternetSession類CInternetSession類是CObject類的直接派生類,其派生結(jié)構(gòu)如圖24.1所示。該類負(fù)責(zé)創(chuàng)建并初始化一個或多個同步的Internet會話,如果需要,還可以處理與代理服務(wù)器的連接。任何使用WinInet類的應(yīng)用程序都必須首先建立一個CInternetSession對象。24.2.2CInternetConnection類CInternetConnection類用于管理與Internet服務(wù)器的連接。由CObject類派生,其派生結(jié)構(gòu)如圖24.2所示。它是CHttpConnection、CFtpConnection、CGopherConnection類的基類。24.2.3CHttpConnection類MFC的CHttpConnection類負(fù)責(zé)管理與HTTP服務(wù)器的連接,它由CInternetConnection派生而來。其派生結(jié)構(gòu)如圖24.3所示。24.2.4CFtpConnection類MFC的CFtpConnection類負(fù)責(zé)管理與FTP服務(wù)器的連接。它由CInternetConnection派生而來,其派生結(jié)構(gòu)如圖24.4所示。24.2.5CGopherConnection類MFC的CGopherConnection類負(fù)責(zé)管理與Gopher服務(wù)器的連接。它由CInternetConnection派生而來,其派生結(jié)構(gòu)如圖24.5所示。24.2.6CInternetFile類CInternetFile類是CHttpFile類和CGopherFile類的基類,其派生結(jié)構(gòu)如圖24.6所示。CInternetFile類及其派生類允許對使用Internet協(xié)議的遠(yuǎn)程系統(tǒng)的文件進(jìn)行訪問。24.2.7CHttpFile類CHttpFile類提供了在一個HTTP服務(wù)器中查找和讀文件的功能,由CInternetFile類派生而來,其派生結(jié)構(gòu)如圖24.7所示。24.2.8CGopherFile類CGopherFile類提供了在一個Gopher服務(wù)器中查找和讀文件的功能,該類派生于CInternetFile類,其派生結(jié)構(gòu)如圖24.8所示。24.2.9CFileFind類CFileFind類提供了在本地系統(tǒng)檢索文件的功能,是CObject類的直接派生類,其派生結(jié)構(gòu)如圖24.9所示。CFileFind類的構(gòu)造函數(shù)如下:CFileFind();24.2.10CFtpFileFind類CFtpFileFind類提供了在FTP服務(wù)器上檢索文件的功能,由CFileFind類派生而來,其派生結(jié)構(gòu)如圖24.10所示。24.2.11CGopherFileFind類CGopherFileFind類提供了在Gopher服務(wù)器上檢索文件的功能。由CFileFind類派生而來,其派生結(jié)構(gòu)如圖24.11所示。24.2.12CGopherLocator類CGopherLocator類用于從Gopher服務(wù)器獲取一個Gopher“定位器”,并確定定位器的類型,使該定位器可用于CGopherFileFind。其派生結(jié)構(gòu)如圖24.12所示。24.2.13CInternetException類CInternetException類的對象代表一個與Internet操作有關(guān)的異常情況。CInternetSession類是CException類的派生類,其派生結(jié)構(gòu)如圖24.13所示。24.3用WinInet類進(jìn)行編程使用MFCWinInet類可以使得從HTTP、FTP或gopher服務(wù)器讀取信息像從硬盤讀取文件一樣容易,無需直接對WinSock或TCP/IP編程即可使用HTTP、FTP和gopher協(xié)議。使用WinInet類進(jìn)行網(wǎng)絡(luò)編程具有以下優(yōu)點:緩存I/O。數(shù)據(jù)的類型安全句柄。許多函數(shù)的默認(rèn)參數(shù)。常見Internet錯誤的異常處理。自動清理打開的句柄和連接。24.3.1HTTP客戶端編程步驟典型HTTP客戶端應(yīng)用程序編程步驟如下:(1)連接到HTTP服務(wù)器。使用CInternetSession::GetFtpConnection(),返回CFtpConnection對象。(2)開始HTTP會話。創(chuàng)建CInternetSession對象,初始化WinInet并連接到服務(wù)器。(3)連接到HTTP服務(wù)器。使用CInternetSession::GetHttpConnection(),返回CHttpConnection對象。(4)打開HTTP請求。使用CHttpConnection::OpenReques()t,返回CHttpFile對象。(5)發(fā)送HTTP請求。使用CHttpFile::AddRequestHeaders()和CHttpFile::SendRequest(),查找文件。如果沒有找到該文件,則返回FALSE。(6)從文件中讀取。使用CHttpFile,使用提供的緩沖區(qū)讀取指定數(shù)目的字節(jié)。(7)處理異常。使用CInternetException類,處理所有常見的Internet異常類型。(8)結(jié)束HTTP會話。處置CInternetSession對象,自動清理打開的文件句柄和連接。24.3.2FTP客戶端編程步驟典型FTP客戶端應(yīng)用程序編程步驟如下所示:(1)開始FTP會話。創(chuàng)建CInternetSession對象,初始化WinInet并連接到服務(wù)器(2)更改為服務(wù)器上新的FTP目錄。使用CFtpConnection::SetCurrentDirectory(),更改服務(wù)器上當(dāng)前連接的目錄。(3)查找FTP目錄中的第一個文件。使用CFtpFileFind::FindFile(),查找第一個文件。如果沒有找到文件,則返回FALSE。(4)查找FTP目錄中的下一個文件。使用CFtpFileFind::FindNextFile(),查找下一個文件。如果沒有找到該文件,則返回FALSE。(5)打開FindFile()或FindNextFile()找到的文件讀取或?qū)懭?。使用FindFile()或FindNextFile()返回的文件名來使用CFtpConnection::OpenFile(),打開服務(wù)器上的文件讀取或?qū)懭?。返回CInternetFile對象。(6)從文件中讀取或?qū)懭胛募J褂肅InternetFile::Read()或CInternetFile::Write(),使用提供的緩沖區(qū)讀取或?qū)懭胫付〝?shù)目的字節(jié)。(7)處理異常。使用CInternetException類,處理所有常見的Internet異常類型。(8)結(jié)束FTP會話。處置CInternetSession對象,自動清理打開的文件句柄和連接24.3.3Gopher客戶端編程步驟典型Gopher客戶端應(yīng)用程序編程步驟如下:(1)開始Gopher會話。創(chuàng)建CInternetSession對象,初始化WinInet并連接到服務(wù)器。(2)連接到Gopher服務(wù)器。使用CInternetSession::GetGopherConnection(),返回CGopherConnection對象。(3)查找Gopher中的第一個資源。 使用CGopherFileFind::FindFile(),查找第一個文件。如果沒有找到文件,則返回FALSE。(4)查找Gopher中的下一個資源。 使用CGopherFileFind::FindNextFile(),查找下一個文件。如果沒有找到該文件,則返回FALSE。(5)打開FindFile或FindNextFile找到的文件讀取。使用CGopherFileFind::GetLocator()獲取Gopher定位器。使用CGopherConnection::OpenFile(),打開該定位器指定的文件。(6)使用Gopher定位器打開文件。 使用CGopherConnection::CreateLocator()創(chuàng)建Gopher定位器。使用CGopherConnection::OpenFile(),打開該定位器指定的文件。OpenFile()返回CGopherFile對象。(7)從文件中讀取。使用CGopherFile,使用提供的緩沖區(qū)讀取指定數(shù)目的字節(jié)(8)處理異常。使用CInternetException類,處理所有常見的Internet異常類型。(9)結(jié)束Gopher會話。處置CInternetSession對象,自動清理打開的文件句柄和連接。24.4利用WinInet類實現(xiàn)FTP客戶端在現(xiàn)實生活中,F(xiàn)TP以其獨特的優(yōu)勢,廣泛地應(yīng)用于Internet文件傳輸。本節(jié)通過一個簡單的FTP客戶端的實例,說明如何使用WinInet類創(chuàng)建Internet客戶端應(yīng)用程序。24.4.1系統(tǒng)總體設(shè)計本FTP客戶端程序?qū)崿F(xiàn)如下功能:通過用戶名、密碼登錄到指定的FTP服務(wù)器。在文件列表框中列出FTP服務(wù)器當(dāng)前目錄所在的文件和目錄。以“另存為”對話框?qū)崿F(xiàn)對選定文件的下載。以“打開”對話框,上傳選擇的文件。24.4.2創(chuàng)建工程下面列出的是創(chuàng)建FTP客戶端應(yīng)用程序的具體步驟:24.4.3連接FTP服務(wù)器在CFTPClientDlg類中,為【連接服務(wù)器】按鈕添加單擊事件,以使FTP客戶端連接到服務(wù)器。24.4.4獲取當(dāng)前目錄所有文件在CFTPClientDlg類中,添加自定義函數(shù):InsertFilesToList(),該函數(shù)的功能為:在建立與FTP服務(wù)器的連接后,獲取服務(wù)目錄和文件,并在將所有文件插入列表框。24.4.5返回上級目錄在CFTPClientDlg類中,為【返回上層目錄】按鈕添加單擊事件OnButtonBack(),以返回FTP服務(wù)器當(dāng)前目錄的上級目錄。24.4.6下載文件在CFTPCl
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 氣體分析儀培訓(xùn)
- 會計檔案管理制度
- 2024年中儲糧集團(tuán)黑龍江分公司追加招聘226人筆試參考題庫附帶答案詳解
- 酒店投資合同范例二零二五年
- 二零二五版私人股份代持協(xié)議書
- 二零二五蔣雁的離婚協(xié)議書
- 商品房承包銷售協(xié)議范例
- 2024四川雅安市川藏醫(yī)藥服務(wù)有限公司考察聘用1名質(zhì)量機構(gòu)負(fù)責(zé)人擬聘用筆試參考題庫附帶答案詳解
- 二零二五朗姿股份擬收購鄭州集美全部股權(quán)
- 2024云南省曲靖市公開選拔市屬國有企業(yè)領(lǐng)導(dǎo)人員及市場化選聘職業(yè)經(jīng)理人(10人)筆試參考題庫附帶答案詳解
- 異地就醫(yī)備案的個人承諾書
- 航空航天概論智慧樹知到期末考試答案章節(jié)答案2024年西安航空學(xué)院
- 人教版七年級下冊生物重點知識提綱(填空版)
- 2024年河南水利與環(huán)境職業(yè)學(xué)院單招職業(yè)適應(yīng)性測試題庫審定版
- MOOC 宋詞經(jīng)典-浙江大學(xué) 中國大學(xué)慕課答案
- 個體診所備案信息表
- MOOC 工程材料學(xué)-華中科技大學(xué) 中國大學(xué)慕課答案
- 基于自由現(xiàn)金流折現(xiàn)模型的江中藥業(yè)估值分析
- 礦山設(shè)備授權(quán)書
- 人教版五年級數(shù)學(xué)下冊第七單元《折線統(tǒng)計圖》(教學(xué)設(shè)計)
- 金鏟鏟之戰(zhàn)教程
評論
0/150
提交評論