第14章_開發(fā)Internet應(yīng)用程序.ppt_第1頁(yè)
第14章_開發(fā)Internet應(yīng)用程序.ppt_第2頁(yè)
第14章_開發(fā)Internet應(yīng)用程序.ppt_第3頁(yè)
第14章_開發(fā)Internet應(yīng)用程序.ppt_第4頁(yè)
第14章_開發(fā)Internet應(yīng)用程序.ppt_第5頁(yè)
已閱讀5頁(yè),還剩24頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、1,第14章 開發(fā)Internet應(yīng)用程序,Internet應(yīng)用程序的開發(fā)通常包括Internet服務(wù)端和客戶端的應(yīng)用程序, Microsoft提供了大量的API函數(shù)來支持這兩種程序,客戶端應(yīng)用程序主要通過Internet協(xié)議(如Gopher,FTP,HTTP等)來從網(wǎng)絡(luò)服務(wù)器上獲取數(shù)據(jù),提供訪問Internet的功能,服務(wù)器端應(yīng)用程序則用來支持HTTP、FTP或Gopher等類型的服務(wù),2,14.1 Internet應(yīng)用程序開發(fā)的幾種類型,使用WinInet類開發(fā)Internet應(yīng)用程序:WinInet類支持HTTP、FTP和Gopher等標(biāo)準(zhǔn)的協(xié)議,使用Windows Socket開發(fā)In

2、ternet應(yīng)用程序:Winsock標(biāo)準(zhǔn)定義了一個(gè)DLL接口來連接Internet,MFC使用CAsyncSocket和CSocket類對(duì)接口進(jìn)行了封裝。,使用消息收發(fā)API(MAPI:Message API) 開發(fā)Internet應(yīng)用程序:使用MAPI可以很方便的向其他應(yīng)用程序發(fā)送電子郵件、語(yǔ)音郵件或傳真等功能,3,14.2 WinInet開發(fā)簡(jiǎn)介,用WinInet開發(fā)程序的優(yōu)點(diǎn),隱藏協(xié)議細(xì)節(jié),簡(jiǎn)化編程:可不必深入了解協(xié)議,而使用WinSocket編程,需理解網(wǎng)絡(luò)通信及協(xié)議基本原理,熟悉的編程接口:WinInet API函數(shù)和很多WinAPI函數(shù)很相似,這對(duì)有編程經(jīng)驗(yàn)的程序員來說是很方便的。

3、,穩(wěn)定性好,不要求程序與底層直接聯(lián)系:WinInet隱藏了協(xié)議的具體細(xì)節(jié),使得程序不必直接使用各種協(xié)議,支持?jǐn)?shù)據(jù)緩存:WinInet函數(shù)為所有的協(xié)議提供緩存能力,程序員只需關(guān)心數(shù)據(jù)而不用去管理數(shù)據(jù)緩存,支持多線程:由于WinInet函數(shù)在內(nèi)部處理多線程的并發(fā)問題,因此WinInet函數(shù)支持多線程,在多線程中可以調(diào)用各種WinInet函數(shù)而不用擔(dān)心發(fā)生問題或死鎖,4,14.3 WinInet類介紹,WinInet類是一個(gè)總稱,目前的版本中分為四組 CInternetSession類 CInternetConnection (連接類) CFileFind類(Internet文件查找類) CInte

4、rnetFile類和CGopherLocator類,5,14.3.1 CInternetSession類,CInternetSession類直接繼承自CObject類,該類用來建立與某個(gè)Internet服務(wù)器的會(huì)話。還可以向代理服務(wù)器描述連接,如果應(yīng)用程序所使用的Internet連接必須保持一段時(shí)間,則可以在CWinApp類中創(chuàng)建相應(yīng)的CInternetSession成員,6,QueryOption提供一個(gè)可能的錯(cuò)誤檢測(cè)判斷 SetOption設(shè)置Internet會(huì)話的選項(xiàng) OpenURL設(shè)置URL,并對(duì)其進(jìn)行分析 GetFtpConnection打開一個(gè)FTP會(huì)話并進(jìn)行連接 GetHttpC

5、onnection打開HTTP服務(wù)器并進(jìn)行連接 GetGopherConnection打開Gopher服務(wù)器并進(jìn)行連接 EnableStatusCallback建立異步操作的狀態(tài)回調(diào) ServiceTypeFromHandle通過Internet句柄返回服務(wù)器類型 GetContext獲取Internet和應(yīng)用程序會(huì)話句柄 Close關(guān)閉Internet連接,CInternetSession類成員函數(shù),7,14.3.2 CInternetConnection類,包括CInternetConnection類及其派生類CHttpConnection、CFtpConnection和CGopherCo

6、nnection類, 這些類幫助用戶管理與Internet服務(wù)器的連接,同時(shí)還提供一些函數(shù)完成和響應(yīng)服務(wù)器的通信,8,CInternetConnection:用于管理與Internet服務(wù)器的連接 CFtpConnection:用于管理與FTP服務(wù)器的連接,可以對(duì)服務(wù)器上的文件和目錄進(jìn)行直接操作 CGopherConnection:管理與Gopher服務(wù)器的連接 CHttpConnection:管理與HTTP服務(wù)器的連接,連接類及其派生類,9,14.3.3 CInternetFile類,包括CInternetFile類及其派生類CHttpFile、CGopherFile。這些類實(shí)現(xiàn)對(duì)遠(yuǎn)程系統(tǒng)上

7、的文件的存取工作。 文件類還包含CFileFind類及其派生類CFtpFileFind、CGopherFileFind類。CFileFind類直接繼承于CObject類,這些類實(shí)現(xiàn)對(duì)本地和遠(yuǎn)程系統(tǒng)上的文件的搜索和定位工作。,10,CInternetFile:允許對(duì)使用Internet協(xié)議的遠(yuǎn)程系統(tǒng)中的文件進(jìn)行操作 CGopherFile:為在Gopher服務(wù)器上進(jìn)行文件檢索和讀取操作提供支持 CHttpFile:提供對(duì)HTTP服務(wù)器上的文件進(jìn)行操作的支持 CFindFile:文文件檢索提供支持 CFtpFileFind:為在FTP服務(wù)器上進(jìn)行的文件檢索操作提供支持 CGopherFileFin

8、d:為在Gopher服務(wù)器上進(jìn)行的文件檢索操作提供支持,文件類說明,11,14.3.4 CGopherLocator類,在從Gopher服務(wù)器中獲取信息之前,必須先獲得該服務(wù)器的定位器,而CGopherLocator類的主要功能就是從Gopher服務(wù)器中得到定位并確定定位器的類型。,12,14.4 用WinInet類開發(fā)應(yīng)用程序,編寫支持Internet的應(yīng)用程序一般步驟: (1)創(chuàng)建一個(gè)CInternetSession對(duì)象:由于Internet會(huì)話是通過CInternetConection類的對(duì)象實(shí)現(xiàn)的,因此首先要?jiǎng)?chuàng)建一個(gè)CInternetSession對(duì)象,建立一個(gè)Internet會(huì)話。

9、(2)建立與服務(wù)器的連接:客戶應(yīng)用程序要與服務(wù)器協(xié)同工作,在創(chuàng)建了CInternetSession對(duì)象后,就需要建立到服務(wù)器的連接。根據(jù)不同的協(xié)議,可選用GetFtpConnect、GetHttpConnect和GetGopherConnect三種方法中的一種。,13,(3)查詢或設(shè)置Internet選項(xiàng):在連接時(shí),有時(shí)還要查詢或設(shè)置Internet 選項(xiàng),這個(gè)工作可以通過QueryOption或SetOption函數(shù)來完成。 (4)向用戶反饋當(dāng)前數(shù)據(jù)處理的進(jìn)程信息:有時(shí)客戶的應(yīng)用程序在進(jìn)行某些操作時(shí),要耗費(fèi)較長(zhǎng)的時(shí)間,因此需要向用戶反饋當(dāng)前的狀態(tài),這個(gè)工作由EnableStatusCallb

10、ack函數(shù)來完成,此時(shí)還要重載OnStatusCallBack函數(shù)以實(shí)現(xiàn)回調(diào)函數(shù)的功能。,14,(5)創(chuàng)建CInternetFile實(shí)例:調(diào)用CInternetSession類的成員函數(shù)OpenURL建立與服務(wù)器的連接,函數(shù)返回一個(gè)CInternetFile指針。 (6)文件讀寫操作:調(diào)用CInternetFile:Read或CInternetFile:Write函數(shù)對(duì)所得到得服務(wù)器文件進(jìn)行讀寫操作。 (7)異常處理:為提高應(yīng)用程序的可靠性和容錯(cuò)性,必須對(duì)可能出現(xiàn)的問題進(jìn)行處理,這種處理通常是通過調(diào)用CInternetException類的對(duì)象對(duì)目前可知的異常進(jìn)行處理。 (8) 結(jié)束:調(diào)用CI

11、nternetSession:Close結(jié)束會(huì)話并銷毀CInternetSession對(duì)象。,15,14.5 WinInet類編程實(shí)例,【例14-1】利用WinInet類編寫Internet應(yīng)用程序。在URL編輯框中寫入地址,單擊“Http”、“Ftp”或“Gopher”等按鈕可在編輯框中顯示查詢到的相應(yīng)服務(wù)器的信息,編輯框1IDC_EDIT_URL 編輯框2IDC_EDIT_RESULT 下壓式按鈕IDC_BUTTON_HTTP 下壓式按鈕IDC_ BUTTON _FTP 下壓式按鈕IDC_ BUTTON _GOPHER 下壓式按鈕IDCANCEL 靜態(tài)文本IDC_STATIC 組框IDC_

12、STATIC,16,給界面對(duì)象連接接變量,17,(a) 給應(yīng)用程序增加一個(gè)自定義的類,單擊InsertNew Class菜單,添加新類類名為CMyWinInetClass,系統(tǒng)會(huì)自動(dòng)在項(xiàng)目中增加MyWinInetClass.cpp和MyWinInetClass.h兩個(gè)文件,18,(b)在新加入的類中增加如下三個(gè)public的成員函數(shù),在頭文件MyWinInetClass.h中可看到這些函數(shù)。 CString ConnectFtp(const CString sUrl); /完成連接Ftp功能的函數(shù) CString ConnectHttp(const CString sUrl); /完成連接Ht

13、tp功能的函數(shù) CString ConnectGopher(const CString sUrl); /完成連接Gopher功能的函數(shù),19,為了建立Internet的會(huì)話,新增加的CmyWinInetClass類中加入一個(gè)private型成員變量m_session: CInternetSession m_session; /建立Internet會(huì)話 由于在上面定義了一個(gè)CWinInet類的對(duì)象,所以還需要在MyWinInetClass.h頭文件中加入如下代碼: #include afxinet.h #include wininet.h,20,為CMyWinInetClass類添加三個(gè)用于連接

14、的成員函數(shù),它們分別是ConnectFtp、ConnectHttp和ConnectGopher。 CString CMyWinInetClass:ConnectFtp(const CString sUrl) CString sResult;/存儲(chǔ)連接信息的字符串 CFtpConnection *Ftpconnection=NULL; sResult=; sResult=sResult+Trying to connect Ftp sites+sUrl+rn; Ftpconnection=m_session.GetFtpConnection(sUrl); /建立到Ftp服務(wù)器的連接,21,if(F

15、tpconnection) sResult=sResult+Connection established.rn; CString sCurDir; Ftpconnection-GetCurrentDirectory(sCurDir); /得到Ftp服務(wù)器的當(dāng)前目錄 sResult=sResult+current directory is+sCurDir+rn; Ftpconnection-Close();/關(guān)閉連接 else sResult=sResult+There are some errors in finding this Ftp sites; return sResult; ,22,

16、CString CMyWinInetClass:ConnectHttp(const CString sUrl) CString sResult; CInternetFile *hHttpFile=NULL; sResult=; sResult=sResult+Trying to connect Http sites+sUrl+rn; hHttpFile=(CInternetFile *)m_session.OpenURL(sUrl); /得到文件指針 if(hHttpFile) sResult=sResult+Connection established.rn; CString sLine;

17、while(hHttpFile-ReadString(sLine) /讀取Http服務(wù)器上的內(nèi)容sResult=sResult+sLine+rn; hHttpFile-Close();/關(guān)閉連接 else sResult=sResult+There are some errors in finding this Http sites; return sResult; ,23,CString CMyWinInetClass:ConnectGopher(const CString sUrl) CString sResult; CInternetFile *hGopherFile=NULL; sRe

18、sult=; sResult=sResult+Trying to connect Gopher sites+sUrl+rn; hGopherFile=(CInternetFile *)m_session.OpenURL(sUrl); /得到文件指針 if(hGopherFile) sResult=sResult+Connection established.rn; CString sLine; while(hGopherFile-ReadString(sLine) /讀取Gopher服務(wù)器內(nèi)容sResult=sResult+sLine+rn; hGopherFile-Close();/結(jié)束連接 else sResult=sResult+There are some errors in finding this Gopher sites; return sResult; ,24,在CMyInternetDlg類中增加一個(gè)public成員變量 CMyWinInetClass m_WinInetClass; 變量m_WinInetClass是CMyWinInetClass類的一個(gè)對(duì)象,所以還要在WinInetDlg.h頭文件加入自定義類的頭文件: #include MyWin

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論