




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、1第第14章章 開發(fā)開發(fā)Internet應(yīng)用程序應(yīng)用程序 Internet應(yīng)用程序的開發(fā)通常包括應(yīng)用程序的開發(fā)通常包括Internet服務(wù)端和客戶端的應(yīng)用程序,服務(wù)端和客戶端的應(yīng)用程序, Microsoft提供了大量的提供了大量的API函數(shù)來支持這函數(shù)來支持這兩種程序,客戶端應(yīng)用程序主要通過兩種程序,客戶端應(yīng)用程序主要通過Internet協(xié)議協(xié)議(如如Gopher,FTP,HTTP等等)來從來從網(wǎng)絡(luò)服務(wù)器上獲取數(shù)據(jù),提供訪問網(wǎng)絡(luò)服務(wù)器上獲取數(shù)據(jù),提供訪問Internet的功能,服務(wù)器端應(yīng)用程序則用的功能,服務(wù)器端應(yīng)用程序則用來支持來支持HTTP、FTP或或Gopher等類型的服等類型的服務(wù)務(wù)2
2、14.1 Internet應(yīng)用程序開發(fā)的幾種類型應(yīng)用程序開發(fā)的幾種類型 使用使用WinInet類開發(fā)類開發(fā)Internet應(yīng)用程序:應(yīng)用程序:WinInet類支持類支持HTTP、FTP和和Gopher等標(biāo)準(zhǔn)的協(xié)議等標(biāo)準(zhǔn)的協(xié)議 使用使用Windows Socket開發(fā)開發(fā)Internet應(yīng)用程序:應(yīng)用程序:Winsock標(biāo)準(zhǔn)定義了一個(gè)標(biāo)準(zhǔn)定義了一個(gè)DLL接口來連接接口來連接Internet,MFC使用使用CAsyncSocket和和CSocket類對接口進(jìn)行了封裝。類對接口進(jìn)行了封裝。使用消息收發(fā)使用消息收發(fā)API(MAPI:Message API) 開發(fā)開發(fā)Internet應(yīng)應(yīng)用程序:用程序:
3、使用使用MAPI可以很方便的向其他應(yīng)用程序發(fā)可以很方便的向其他應(yīng)用程序發(fā)送電子郵件、語音郵件或傳真等功能送電子郵件、語音郵件或傳真等功能 314.2 WinInet開發(fā)簡介開發(fā)簡介 用用WinInet開發(fā)程開發(fā)程序的優(yōu)點(diǎn)序的優(yōu)點(diǎn) 隱藏協(xié)議細(xì)節(jié),簡化編程:隱藏協(xié)議細(xì)節(jié),簡化編程:可不必深入了解協(xié)議,而可不必深入了解協(xié)議,而使用使用WinSocket編程,需理解網(wǎng)絡(luò)通信及協(xié)議基本原理編程,需理解網(wǎng)絡(luò)通信及協(xié)議基本原理 熟悉的編程接口:熟悉的編程接口:WinInet API函數(shù)和很多函數(shù)和很多WinAPI函數(shù)很函數(shù)很相似,這對有編程經(jīng)驗(yàn)的程序員來說是很方便的。相似,這對有編程經(jīng)驗(yàn)的程序員來說是很方便
4、的。穩(wěn)定性好,不要求程序與底層直接聯(lián)系:穩(wěn)定性好,不要求程序與底層直接聯(lián)系:WinInet隱藏隱藏了協(xié)議的具體細(xì)節(jié),使得程序不必直接使用各種協(xié)議了協(xié)議的具體細(xì)節(jié),使得程序不必直接使用各種協(xié)議支持?jǐn)?shù)據(jù)緩存:支持?jǐn)?shù)據(jù)緩存:WinInetWinInet函數(shù)為所有的協(xié)議提供緩存函數(shù)為所有的協(xié)議提供緩存能力,程序員只需關(guān)心數(shù)據(jù)而不用去管理數(shù)據(jù)緩存能力,程序員只需關(guān)心數(shù)據(jù)而不用去管理數(shù)據(jù)緩存 支持多線程:支持多線程:由于由于WinInet函數(shù)在內(nèi)部處理多線程的并函數(shù)在內(nèi)部處理多線程的并發(fā)問題,因此發(fā)問題,因此WinInet函數(shù)支持多線程,在多線程中可函數(shù)支持多線程,在多線程中可以調(diào)用各種以調(diào)用各種WinI
5、net函數(shù)而不用擔(dān)心發(fā)生問題或死鎖函數(shù)而不用擔(dān)心發(fā)生問題或死鎖 414.3 WinInet類介紹類介紹 WinInet類是一個(gè)總稱,目前的版本中分為四組類是一個(gè)總稱,目前的版本中分為四組 CInternetSession類類 CInternetConnection (連接類連接類) CFileFind類類(Internet文件查找類文件查找類) CInternetFile類和類和CGopherLocator類類 514.3.1 CInternetSession類類 CInternetSession類直接繼承自類直接繼承自CObject類,類,該類用來建立與某個(gè)該類用來建立與某個(gè)Internet
6、服務(wù)器的會(huì)服務(wù)器的會(huì)話。還可以向代理服務(wù)器描述連接,如話。還可以向代理服務(wù)器描述連接,如果應(yīng)用程序所使用的果應(yīng)用程序所使用的Internet連接必須保連接必須保持一段時(shí)間,則可以在持一段時(shí)間,則可以在CWinApp類中創(chuàng)類中創(chuàng)建相應(yīng)的建相應(yīng)的CInternetSession成員成員 6QueryOption提供一個(gè)可能的錯(cuò)誤檢測判斷提供一個(gè)可能的錯(cuò)誤檢測判斷SetOption設(shè)置設(shè)置Internet會(huì)話的選項(xiàng)會(huì)話的選項(xiàng)OpenURL設(shè)置設(shè)置URL,并對其進(jìn)行分析,并對其進(jìn)行分析GetFtpConnection打開一個(gè)打開一個(gè)FTP會(huì)話并進(jìn)行連接會(huì)話并進(jìn)行連接GetHttpConnection打
7、開打開HTTP服務(wù)器并進(jìn)行連接服務(wù)器并進(jìn)行連接GetGopherConnection打開打開Gopher服務(wù)器并進(jìn)行連接服務(wù)器并進(jìn)行連接EnableStatusCallback建立異步操作的狀態(tài)回調(diào)建立異步操作的狀態(tài)回調(diào)ServiceTypeFromHandle 通過通過Internet句柄返回服務(wù)器類型句柄返回服務(wù)器類型GetContext獲取獲取Internet和應(yīng)用程序會(huì)話句柄和應(yīng)用程序會(huì)話句柄Close關(guān)閉關(guān)閉Internet連接連接CInternetSession類類成員函數(shù)成員函數(shù)714.3.2 CInternetConnection類類 包括包括CInternetConnecti
8、on類及其派生類類及其派生類CHttpConnection、CFtpConnection和和CGopherConnection類,類, 這些類幫助用戶管理與這些類幫助用戶管理與Internet服務(wù)器的連接,服務(wù)器的連接,同時(shí)還提供一些函數(shù)完成和響應(yīng)服務(wù)器的通同時(shí)還提供一些函數(shù)完成和響應(yīng)服務(wù)器的通信信 8CInternetConnection:用于管理與用于管理與Internet服務(wù)器的連接服務(wù)器的連接CFtpConnection:用于管理與用于管理與FTP服務(wù)器的連接,可以服務(wù)器的連接,可以對服務(wù)器上的文件和目錄進(jìn)行直接操作對服務(wù)器上的文件和目錄進(jìn)行直接操作CGopherConnection:
9、管理與管理與Gopher服務(wù)器的連接服務(wù)器的連接CHttpConnection:管理與管理與HTTP服務(wù)器的連接服務(wù)器的連接連接類及其連接類及其派生類派生類 914.3.3 CInternetFile類類 包括包括CInternetFile類及其派生類類及其派生類CHttpFile、CGopherFile。這些類實(shí)現(xiàn)對遠(yuǎn)程系統(tǒng)上的文。這些類實(shí)現(xiàn)對遠(yuǎn)程系統(tǒng)上的文件的存取工作。件的存取工作。文 件 類 還 包 含文 件 類 還 包 含 C F i l e F i n d 類 及 其 派 生 類類 及 其 派 生 類CFtpFileFind、CGopherFileFind類。類。CFileFind類
10、類直接繼承于直接繼承于CObject類,這些類實(shí)現(xiàn)對本地和類,這些類實(shí)現(xiàn)對本地和遠(yuǎn)程系統(tǒng)上的文件的搜索和定位工作。遠(yuǎn)程系統(tǒng)上的文件的搜索和定位工作。 10CInternetFile:允許對使用允許對使用Internet協(xié)議的遠(yuǎn)程系統(tǒng)中的協(xié)議的遠(yuǎn)程系統(tǒng)中的文件進(jìn)行操作文件進(jìn)行操作CGopherFile:為在為在Gopher服務(wù)器上進(jìn)行文件檢索和讀取服務(wù)器上進(jìn)行文件檢索和讀取操作提供支持操作提供支持CHttpFile:提供對提供對HTTP服務(wù)器上的文件進(jìn)行操作的支持服務(wù)器上的文件進(jìn)行操作的支持CFindFile:文文件檢索提供支持文文件檢索提供支持CFtpFileFind:為在為在FTP服務(wù)器上進(jìn)
11、行的文件檢索操作提服務(wù)器上進(jìn)行的文件檢索操作提供支持供支持CGopherFileFind:為在為在Gopher服務(wù)器上進(jìn)行的文件檢索服務(wù)器上進(jìn)行的文件檢索操作提供支持操作提供支持文件類說明文件類說明 1114.3.4 CGopherLocator類類 在從在從Gopher服務(wù)器中獲取信息之前,服務(wù)器中獲取信息之前,必須先獲得該服務(wù)器的定位器,而必須先獲得該服務(wù)器的定位器,而CGopherLocator類的主要功能就是從類的主要功能就是從Gopher服務(wù)器中得到定位并確定定位服務(wù)器中得到定位并確定定位器的類型器的類型。1214.4 用用WinInet類開發(fā)應(yīng)用程序類開發(fā)應(yīng)用程序 編寫支持編寫支持
12、Internet的應(yīng)用程序一般步驟:的應(yīng)用程序一般步驟:(1)創(chuàng)建一個(gè)創(chuàng)建一個(gè)CInternetSession對象:對象:由于由于Internet會(huì)話是通過會(huì)話是通過CInternetConection類的對象實(shí)現(xiàn)的,類的對象實(shí)現(xiàn)的,因此首先要?jiǎng)?chuàng)建一個(gè)因此首先要?jiǎng)?chuàng)建一個(gè)CInternetSession對象,建對象,建立一個(gè)立一個(gè)Internet會(huì)話。會(huì)話。(2)建立與服務(wù)器的連接:建立與服務(wù)器的連接:客戶應(yīng)用程序要與服客戶應(yīng)用程序要與服務(wù)器協(xié)同工作,在創(chuàng)建了務(wù)器協(xié)同工作,在創(chuàng)建了CInternetSession對象對象后,就需要建立到服務(wù)器的連接。根據(jù)不同的后,就需要建立到服務(wù)器的連接。根據(jù)不
13、同的協(xié)議,可選用協(xié)議,可選用GetFtpConnect、GetHttpConnect和和GetGopherConnect三種方法中的一種。三種方法中的一種。13(3)查詢或設(shè)置查詢或設(shè)置Internet選項(xiàng):選項(xiàng):在連接時(shí),有時(shí)還在連接時(shí),有時(shí)還要查詢或設(shè)置要查詢或設(shè)置Internet 選項(xiàng),這個(gè)工作可以通過選項(xiàng),這個(gè)工作可以通過QueryOption或或SetOption函數(shù)來完成。函數(shù)來完成。(4)向用戶反饋當(dāng)前數(shù)據(jù)處理的進(jìn)程信息:向用戶反饋當(dāng)前數(shù)據(jù)處理的進(jìn)程信息:有時(shí)有時(shí)客戶的應(yīng)用程序在進(jìn)行某些操作時(shí),要耗費(fèi)較客戶的應(yīng)用程序在進(jìn)行某些操作時(shí),要耗費(fèi)較長的時(shí)間,因此需要向用戶反饋當(dāng)前的狀態(tài)
14、,長的時(shí)間,因此需要向用戶反饋當(dāng)前的狀態(tài),這個(gè)工作由這個(gè)工作由EnableStatusCallback函數(shù)來完成,函數(shù)來完成,此時(shí)還要重載此時(shí)還要重載OnStatusCallBack函數(shù)以實(shí)現(xiàn)回調(diào)函數(shù)以實(shí)現(xiàn)回調(diào)函數(shù)的功能。函數(shù)的功能。14(5)創(chuàng)建創(chuàng)建CInternetFile實(shí)例:實(shí)例:調(diào)用調(diào)用CInternetSession類的成員函數(shù)類的成員函數(shù)OpenURL建立與服務(wù)器的連接,建立與服務(wù)器的連接,函數(shù)返回一個(gè)函數(shù)返回一個(gè)CInternetFile指針。指針。 (6)文件讀寫操作:文件讀寫操作:調(diào)用調(diào)用CInternetFile:Read或或CInternetFile:Write函數(shù)對所
15、得到得服務(wù)器文件函數(shù)對所得到得服務(wù)器文件進(jìn)行讀寫操作。進(jìn)行讀寫操作。(7)異常處理:異常處理:為提高應(yīng)用程序的可靠性和容錯(cuò)為提高應(yīng)用程序的可靠性和容錯(cuò)性,必須對可能出現(xiàn)的問題進(jìn)行處理,這種處性,必須對可能出現(xiàn)的問題進(jìn)行處理,這種處理通常是通過調(diào)用理通常是通過調(diào)用CInternetException類的對象對類的對象對目前可知的異常進(jìn)行處理。目前可知的異常進(jìn)行處理。 (8) 結(jié)束:結(jié)束:調(diào)用調(diào)用CInternetSession:Close結(jié)束會(huì)話結(jié)束會(huì)話并銷毀并銷毀CInternetSession對象。對象。 1514.5 WinInet類編程實(shí)例類編程實(shí)例 【例【例14-1】利用】利用WinI
16、net類編寫類編寫Internet應(yīng)用程序。應(yīng)用程序。在在URL編輯框中寫入地址,單擊編輯框中寫入地址,單擊“Http”、“Ftp”或或“Gopher”等按鈕可在編輯框中顯示等按鈕可在編輯框中顯示查詢到的相應(yīng)服務(wù)器的信息查詢到的相應(yīng)服務(wù)器的信息 編輯框編輯框1IDC_EDIT_URL編輯框編輯框2IDC_EDIT_RESULT下壓式按鈕下壓式按鈕IDC_BUTTON_HTTP下壓式按鈕下壓式按鈕IDC_ BUTTON _FTP下壓式按鈕下壓式按鈕IDC_ BUTTON _GOPHER下壓式按鈕下壓式按鈕IDCANCEL靜態(tài)文本靜態(tài)文本IDC_STATIC組框組框IDC_STATIC16給界面對
17、象連接接變量給界面對象連接接變量 17(a) 給應(yīng)用程序增加一個(gè)自定義的類,單擊給應(yīng)用程序增加一個(gè)自定義的類,單擊InsertNew Class菜單,添加新類類名為菜單,添加新類類名為CMyWinInetClass,系統(tǒng)會(huì)自,系統(tǒng)會(huì)自動(dòng)在項(xiàng)目中增加動(dòng)在項(xiàng)目中增加MyWinInetClass.cpp和和MyWinInetClass.h兩兩個(gè)文件個(gè)文件 18(b)在新加入的類中增加如下三個(gè)在新加入的類中增加如下三個(gè)public的成員函的成員函數(shù),在頭文件數(shù),在頭文件MyWinInetClass.h中可看到這些中可看到這些函數(shù)。函數(shù)。CString ConnectFtp(const CString
18、sUrl);/完成連接完成連接Ftp功能的函數(shù)功能的函數(shù)CString ConnectHttp(const CString sUrl);/完成連接完成連接Http功能的函數(shù)功能的函數(shù)CString ConnectGopher(const CString sUrl);/完成連接完成連接Gopher功能的函數(shù)功能的函數(shù)19為了建立為了建立Internet的會(huì)話,新增加的的會(huì)話,新增加的CmyWinInetClass類類中加入一個(gè)中加入一個(gè)private型成員變量型成員變量m_session:CInternetSession m_session; /建立建立Internet會(huì)話會(huì)話由于在上面定義了一
19、個(gè)由于在上面定義了一個(gè)CWinInet類的對象,所以還需類的對象,所以還需要在要在MyWinInetClass.h頭文件中加入如下代碼:頭文件中加入如下代碼:#include afxinet.h#include wininet.h20為為CMyWinInetClass類添加三個(gè)用于連接的成員函數(shù),它類添加三個(gè)用于連接的成員函數(shù),它們分別是們分別是ConnectFtp、ConnectHttp和和ConnectGopher。 CString CMyWinInetClass:ConnectFtp(const CString sUrl) CString sResult;/存儲連接信息的字符串存儲連接信
20、息的字符串 CFtpConnection *Ftpconnection=NULL; sResult=; sResult=sResult+Trying to connect Ftp sites+sUrl+rn; Ftpconnection=m_session.GetFtpConnection(sUrl);/建立到建立到Ftp服務(wù)器的連接服務(wù)器的連接21if(Ftpconnection) sResult=sResult+Connection established.rn; CString sCurDir; Ftpconnection-GetCurrentDirectory(sCurDir);/得到
21、得到Ftp服務(wù)器的當(dāng)前目錄服務(wù)器的當(dāng)前目錄 sResult=sResult+current directory is+sCurDir+rn; Ftpconnection-Close();/關(guān)閉連接關(guān)閉連接else sResult=sResult+There are some errors in finding this Ftp sites;return sResult; 22CString CMyWinInetClass:ConnectHttp(const CString sUrl) CString sResult; CInternetFile *hHttpFile=NULL; sResult
22、=; sResult=sResult+Trying to connect Http sites+sUrl+rn; hHttpFile=(CInternetFile *)m_session.OpenURL(sUrl);/得到文件指針得到文件指針 if(hHttpFile) sResult=sResult+Connection established.rn; CString sLine; while(hHttpFile-ReadString(sLine) /讀取讀取Http服務(wù)器上的內(nèi)容服務(wù)器上的內(nèi)容sResult=sResult+sLine+rn; hHttpFile-Close();/關(guān)閉連接
23、關(guān)閉連接else sResult=sResult+There are some errors in finding this Http sites;return sResult; 23CString CMyWinInetClass:ConnectGopher(const CString sUrl) CString sResult; CInternetFile *hGopherFile=NULL; sResult=; sResult=sResult+Trying to connect Gopher sites+sUrl+rn; hGopherFile=(CInternetFile *)m_ses
24、sion.OpenURL(sUrl);/得到文件指針得到文件指針if(hGopherFile) sResult=sResult+Connection established.rn; CString sLine; while(hGopherFile-ReadString(sLine) /讀取讀取Gopher服務(wù)器內(nèi)容服務(wù)器內(nèi)容sResult=sResult+sLine+rn; hGopherFile-Close();/結(jié)束連接結(jié)束連接else sResult=sResult+There are some errors in finding this Gopher sites;return sResult;24在在CMyInternetDlg類中增加一個(gè)類中增加一個(gè)public成員變量成員變量CMyWinInetClass m_WinInetClass;變量變量m_WinInetClass是是CMyWi
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 農(nóng)業(yè)種植技術(shù)研究與創(chuàng)新合作協(xié)議
- 品牌營銷戰(zhàn)略聯(lián)盟合作協(xié)議與
- 行政管理與現(xiàn)代管理學(xué)試題及答案
- 行政管理自考重點(diǎn)復(fù)習(xí)試題及答案總結(jié)
- 2025合同管理的核心要素
- 行政管理在創(chuàng)新型城市建設(shè)中的角色試題及答案
- 2025自動(dòng)化設(shè)備租賃管理合同(參考樣板)
- 2025音響設(shè)備銷售合同書模板
- 2025年租賃合同范文:對講機(jī)出租協(xié)議
- 現(xiàn)代管理學(xué)中的知識管理與試題及答案
- 2024(統(tǒng)編版)語文七年級上冊《西游記》真題+綜合題練習(xí)(學(xué)生版+解析版)
- 中國青銅時(shí)代(張光直)(歷史-中國-史前史)
- 企業(yè)財(cái)務(wù)管理畢業(yè)論文范文
- 醫(yī)院員工價(jià)值取向培訓(xùn)
- DB11T 2194-2023 防汛隱患排查治理規(guī)范在建工程
- 風(fēng)機(jī)基礎(chǔ)降水施工實(shí)施方案
- 門禁系統(tǒng)施工技術(shù)方案
- 《嬰幼兒健康管理》課件-任務(wù)四 嬰幼兒健康檔案建設(shè)與管理
- 【出口退稅管理探究的國內(nèi)外探究綜述4300字】
- 參觀河南省博物院
- 2024版小學(xué)語文新課程標(biāo)準(zhǔn)
評論
0/150
提交評論