《網(wǎng)絡(luò)程序設(shè)計(jì)》第6章 WinInet 編程_第1頁
《網(wǎng)絡(luò)程序設(shè)計(jì)》第6章 WinInet 編程_第2頁
《網(wǎng)絡(luò)程序設(shè)計(jì)》第6章 WinInet 編程_第3頁
《網(wǎng)絡(luò)程序設(shè)計(jì)》第6章 WinInet 編程_第4頁
《網(wǎng)絡(luò)程序設(shè)計(jì)》第6章 WinInet 編程_第5頁
已閱讀5頁,還剩14頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1WinInet是WindowsInternet擴(kuò)展應(yīng)用程序高級(jí)編程接口,是專為開發(fā)具有Internet功能的客戶端應(yīng)用程序而提供的。它有兩種形式:WinInetAPI包含一個(gè)C語言的函數(shù)集(Win32Internetfunctions),MFCWinInet類層次則是對(duì)前者的面向?qū)ο蟮姆庋b。

支持的協(xié)議包括:FTP,HTTP,Gopher26.1MFCWinInet類6.1.1概述微軟在MFC基礎(chǔ)類庫中提供了WinInet類,它是對(duì)于WinInetAPI函數(shù)的封裝,是對(duì)所有的WinInetAPI函數(shù)按其應(yīng)用類型進(jìn)行分類和打包后,以面向?qū)ο蟮男问?,向用戶提供的一個(gè)更高層次上的更容易使用的編程接口。利用MFCWinInet類來編寫Internet應(yīng)用程序還具有以下優(yōu)點(diǎn):(1)提供緩沖機(jī)制。(2)支持安全機(jī)制。(3)支持Web代理服務(wù)器訪問。(4)緩沖的輸入/輸出。(5)輕松簡潔。36.1.2MFCWinInet所包含的類

MFCWinInet系列類在afxinet.h包含文件中定義,因此只要將#include<afxinet.h>語句放在使用WinInet系列類的cpp程序開始處,就可以使用該系列中的類了。

WinInet系列中不同的類是對(duì)不同層次的hInternet句柄的封裝:分為以下幾種:1.CInternetSession類代表應(yīng)用程序的一次Internet會(huì)話,它封裝了hInternet會(huì)話根句柄,并把使用根句柄的API函數(shù),如OpenURL、InternetConnect等,封裝為它的成員函數(shù)。2.連接類包括CInternetConnection類和它的派生類CFtpConnection類、CHttpConnection類、和CGopherConnection類。43.文件類文件類首先包括CInternetFile類和由它派生的CHttpFile類和CGopherFile類,另外,由CFileFind類派生的用于文件查找的CFtpFileFind類和CGopherFileFind類也應(yīng)歸入文件類的層次。CinternetFile<-CStudioFile<-CFile4.CInternetException類CInternetException類代表MFCWinInet類的成員函數(shù)在執(zhí)行時(shí)所發(fā)生的錯(cuò)誤或異常。5圖6.6MFCWinInet類的關(guān)系

66.1.3使用WinInet類編程的一般步驟(1)創(chuàng)建CInternetSession類對(duì)象,創(chuàng)建并初始化Internet會(huì)話。(2)利用CInternetSession類的QueryOption或SetOption成員函數(shù),可以查詢或設(shè)置該類內(nèi)含的Internet請(qǐng)求選項(xiàng),這一步是可選。(3)創(chuàng)建連接類對(duì)象,建立CInternetSession對(duì)象與網(wǎng)絡(luò)服務(wù)器的連接,也就是應(yīng)用程序與網(wǎng)絡(luò)服務(wù)器的連接。(4)創(chuàng)建文件檢索類對(duì)象,對(duì)服務(wù)器進(jìn)行檢索。7(5)如果需要使用異步操作模式,可以重載CInternetSession類的OnStatusCallback函數(shù),并啟動(dòng)應(yīng)用程序使用狀態(tài)回調(diào)機(jī)制。重載相關(guān)函數(shù),加入自己的代碼。(6)如果還想更緊密地控制對(duì)于服務(wù)器文件的訪問,可以進(jìn)一步創(chuàng)建文件類對(duì)象實(shí)例,完成文件查找或文件讀寫操作。(7)創(chuàng)建CInternetException類對(duì)象實(shí)例,處理錯(cuò)誤。(8)關(guān)閉各種類,將資源釋放給系統(tǒng)。

86.1.4創(chuàng)建CInternetSession類對(duì)象創(chuàng)建CInternetSession類對(duì)象,將創(chuàng)建并初始化Internet會(huì)話。像其它類一樣,創(chuàng)建CInternetSession類對(duì)象需要執(zhí)行該類的構(gòu)造函數(shù),它的原型是:

CInternetSession(LPCTSTRpstrAgent=NULL,DWORDdwContext=1,

DWORDdwAccessType=PRE_CONFIG_INTERNET_ACCESS,LPCTSTRpstrProxyName=NULL,LPCTSTRpstrProxyBypass=NULL,DWORDdwFlags=0);

96.1.5查詢或設(shè)置Internet請(qǐng)求選項(xiàng)創(chuàng)建CInternetSession類對(duì)象后,可以調(diào)用它的QueryOption成員函數(shù)查詢Internet請(qǐng)求選項(xiàng),調(diào)用它的SetOption成員函數(shù)來設(shè)置這些選項(xiàng)。6.1.6創(chuàng)建連接類對(duì)象通過調(diào)用CInternetSession對(duì)象的GetFtpConnection、GetHttpConnection、GetGopherConnection成員函數(shù),可以分別建立CInternetSession對(duì)象與網(wǎng)絡(luò)上FTP、HTTP、和Gopher服務(wù)器的連接。并分別創(chuàng)建CFtpConnection、CHttpConnection、CGopherConnection類的對(duì)象,來代表這三種連接。106.1.7使用文件檢索類CFtpFileFind類和CGopherFileFind類分別封裝了對(duì)于FTP和Gopher服務(wù)器的文件檢索操作。它們的基類是CFileFind類。創(chuàng)建了連接對(duì)象后,可以進(jìn)一步創(chuàng)建文件檢索類對(duì)象,并使用該對(duì)象的方法實(shí)現(xiàn)對(duì)服務(wù)器的文件檢索。

現(xiàn)以CFtpFileFind類為例說明:111.創(chuàng)建文件檢索類的對(duì)象實(shí)例一般直接調(diào)用CFtpFileFind類的構(gòu)造函數(shù)創(chuàng)建該類的對(duì)象實(shí)例。應(yīng)當(dāng)將前面所創(chuàng)建的FTP連接對(duì)象指針作為參數(shù)。構(gòu)造函數(shù)的原型是:

CFtpFileFind(CFtpConnection*pConnection,//連接對(duì)象指針DWORDdwContext=1);//表示此操作的環(huán)境值例如:CFtpFileFind*pFileFind;pFileFind=newCFtpFileFind(pConnection);122.檢索第一個(gè)符合條件的對(duì)象使用CFtpFileFind類的FindFile成員函數(shù)可以在FTP服務(wù)器上或本地緩沖區(qū)中找到第一個(gè)符合條件的對(duì)象。virtualBOOLFindFile(LPCTSTRpstrName=NULL,//指定要查找的文件路徑,可以使用通配符DWORDdwFlags=INTERNET_FLAG_RELOAD);//從哪里檢索133.繼續(xù)查找其它的符合條件的對(duì)象在上一步的基礎(chǔ)上,反復(fù)地調(diào)用FindNextFile成員函數(shù),可以找到所有符合條件的對(duì)象。直到函數(shù)返回FALSE為止。FindNextFile用于繼續(xù)進(jìn)行FindFile調(diào)用的文件檢索操作。virtualBOOLFindNextFile();每查到一個(gè)對(duì)象,隨即調(diào)用GetFileURL成員函數(shù),可以獲得已檢索到的對(duì)象的URL。CStringGetFileURL()const;144.其它可用的成員函數(shù)CFtpFileFind類本身定義的成員函數(shù)只有上面幾個(gè)。但是由于它是從CFileFind類派生的,它繼承基類CFileFind的許多成員函數(shù),可以進(jìn)行各種文件檢索相關(guān)的操作。156.1.8創(chuàng)建CInternetException類CInternetException(DWORDdwError);6.2MFCWinInet類應(yīng)用程序編程實(shí)例6.2.1程序要實(shí)現(xiàn)的功能

程序能實(shí)現(xiàn)基本的FTP客戶端功能,能登陸FTP服務(wù)器,顯示登錄客戶目錄下的文件和目錄名,能從該目錄中選擇下載服務(wù)器的文件,也能向服務(wù)器上傳文件。應(yīng)用程序的類型是基于對(duì)話框的,

主對(duì)話框用戶界面如圖6.7所示:圖6.7Ftp客戶端程序的主對(duì)話框

166.2.2創(chuàng)建應(yīng)用程序的過程1.使用MFCAppWizard創(chuàng)建應(yīng)用程序框架工程名是Ftp,應(yīng)用程序的類型是基于對(duì)話框的,其它部分接受系統(tǒng)的默認(rèn)設(shè)置就可以。應(yīng)用程序包括兩個(gè)類:應(yīng)用程序類:CFtpApp,

對(duì)應(yīng)的文件是Ftp.h和Ftp.cpp對(duì)話框類:CFtpDlg,

對(duì)應(yīng)的文件是FtpDlg.h和FtpDlg.cpp

172.為對(duì)話框添加控件在程序的主對(duì)話框界面中按照?qǐng)D6-9添加相應(yīng)的可視控件對(duì)象,并按照表6.13修改控件的屬性。3.定義控件的成員變量按照表6.10,用類向?qū)?ClassWizard)為對(duì)話框中的控件對(duì)象定義相應(yīng)的成員變量。4.添加成

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論