開發(fā)Internet應(yīng)用程序_第1頁(yè)
開發(fā)Internet應(yīng)用程序_第2頁(yè)
開發(fā)Internet應(yīng)用程序_第3頁(yè)
開發(fā)Internet應(yīng)用程序_第4頁(yè)
開發(fā)Internet應(yīng)用程序_第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ā)開發(fā)Internet應(yīng)用程序應(yīng)用程序 Internet應(yīng)用程序的開發(fā)通常包括應(yīng)用程序的開發(fā)通常包括Internet服務(wù)端和客戶端的應(yīng)用程序,服務(wù)端和客戶端的應(yīng)用程序, Microsoft提供了大量的提供了大量的API函數(shù)來(lái)支持這函數(shù)來(lái)支持這兩種程序,客戶端應(yīng)用程序主要通過兩種程序,客戶端應(yīng)用程序主要通過Internet協(xié)議協(xié)議(如如Gopher,FTP,HTTP等等)來(lái)從來(lái)從網(wǎng)絡(luò)服務(wù)器上獲取數(shù)據(jù),提供訪問網(wǎng)絡(luò)服務(wù)器上獲取數(shù)據(jù),提供訪問Internet的功能,服務(wù)器端應(yīng)用程序則用的功能,服務(wù)器端應(yīng)用程序則用來(lái)支持來(lái)支持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接口來(lái)連接接口來(lái)連接Internet,MFC使用使用CAsyncSocket和和CSocket類對(duì)接口進(jìn)行了封裝。類對(duì)接口進(jìn)行了封裝。使用消息收發(fā)使用消息收發(fā)API(MAPI:Message API) 開發(fā)開發(fā)Internet應(yīng)應(yīng)用程序:用程序:

3、使用使用MAPI可以很方便的向其他應(yīng)用程序發(fā)可以很方便的向其他應(yīng)用程序發(fā)送電子郵件、語(yǔ)音郵件或傳真等功能送電子郵件、語(yǔ)音郵件或傳真等功能 314.2 WinInet開發(fā)簡(jiǎn)介開發(fā)簡(jiǎn)介 用用WinInet開發(fā)程開發(fā)程序的優(yōu)點(diǎn)序的優(yōu)點(diǎn) 隱藏協(xié)議細(xì)節(jié),簡(jiǎn)化編程:隱藏協(xié)議細(xì)節(jié),簡(jiǎn)化編程:可不必深入了解協(xié)議,而可不必深入了解協(xié)議,而使用使用WinSocket編程,需理解網(wǎng)絡(luò)通信及協(xié)議基本原理編程,需理解網(wǎng)絡(luò)通信及協(xié)議基本原理 熟悉的編程接口:熟悉的編程接口:WinInet API函數(shù)和很多函數(shù)和很多WinAPI函數(shù)很函數(shù)很相似,這對(duì)有編程經(jīng)驗(yàn)的程序員來(lái)說是很方便的。相似,這對(duì)有編程經(jīng)驗(yàn)的程序員來(lái)說是很方便

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類,類,該類用來(lái)建立與某個(gè)該類用來(lái)建立與某個(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ò)誤檢測(cè)判斷提供一個(gè)可能的錯(cuò)誤檢測(cè)判斷SetOption設(shè)置設(shè)置Internet會(huì)話的選項(xiàng)會(huì)話的選項(xiàng)OpenURL設(shè)置設(shè)置URL,并對(duì)其進(jìn)行分析,并對(duì)其進(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ù)器的連接,可以對(duì)服務(wù)器上的文件和目錄進(jìn)行直接操作對(duì)服務(wù)器上的文件和目錄進(jìn)行直接操作CGopherConnection:

9、管理與管理與Gopher服務(wù)器的連接服務(wù)器的連接CHttpConnection:管理與管理與HTTP服務(wù)器的連接服務(wù)器的連接連接類及其連接類及其派生類派生類 914.3.3 CInternetFile類類 包括包括CInternetFile類及其派生類類及其派生類CHttpFile、CGopherFile。這些類實(shí)現(xiàn)對(duì)遠(yuǎn)程系統(tǒng)上的文。這些類實(shí)現(xiàn)對(duì)遠(yuǎn)程系統(tǒng)上的文件的存取工作。件的存取工作。文 件 類 還 包 含文 件 類 還 包 含 C F i l e F i n d 類 及 其 派 生 類類 及 其 派 生 類CFtpFileFind、CGopherFileFind類。類。CFileFind類

10、類直接繼承于直接繼承于CObject類,這些類實(shí)現(xiàn)對(duì)本地和類,這些類實(shí)現(xiàn)對(duì)本地和遠(yuǎn)程系統(tǒng)上的文件的搜索和定位工作。遠(yuǎn)程系統(tǒng)上的文件的搜索和定位工作。 10CInternetFile:允許對(duì)使用允許對(duì)使用Internet協(xié)議的遠(yuǎn)程系統(tǒng)中的協(xié)議的遠(yuǎn)程系統(tǒng)中的文件進(jìn)行操作文件進(jìn)行操作CGopherFile:為在為在Gopher服務(wù)器上進(jìn)行文件檢索和讀取服務(wù)器上進(jìn)行文件檢索和讀取操作提供支持操作提供支持CHttpFile:提供對(duì)提供對(duì)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對(duì)象:對(duì)象:由于由于Internet會(huì)話是通過會(huì)話是通過CInternetConection類的對(duì)象實(shí)現(xiàn)的,類的對(duì)象實(shí)現(xiàn)的,因此首先要?jiǎng)?chuàng)建一個(gè)因此首先要?jiǎng)?chuàng)建一個(gè)CInternetSession對(duì)象,建對(duì)象,建立一個(gè)立一個(gè)Internet會(huì)話。會(huì)話。(2)建立與服務(wù)器的連接:建立與服務(wù)器的連接:客戶應(yīng)用程序要與服客戶應(yīng)用程序要與服務(wù)器協(xié)同工作,在創(chuàng)建了務(wù)器協(xié)同工作,在創(chuàng)建了CInternetSession對(duì)象對(duì)象后,就需要建立到服務(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ù)來(lái)完成。函數(shù)來(lái)完成。(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)較長(zhǎng)的時(shí)間,因此需要向用戶反饋當(dāng)前的狀態(tài)

14、,長(zhǎng)的時(shí)間,因此需要向用戶反饋當(dāng)前的狀態(tài),這個(gè)工作由這個(gè)工作由EnableStatusCallback函數(shù)來(lái)完成,函數(shù)來(lái)完成,此時(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ù)對(duì)所

15、得到得服務(wù)器文件函數(shù)對(duì)所得到得服務(wù)器文件進(jìn)行讀寫操作。進(jìn)行讀寫操作。(7)異常處理:異常處理:為提高應(yīng)用程序的可靠性和容錯(cuò)為提高應(yīng)用程序的可靠性和容錯(cuò)性,必須對(duì)可能出現(xiàn)的問題進(jìn)行處理,這種處性,必須對(duì)可能出現(xiàn)的問題進(jìn)行處理,這種處理通常是通過調(diào)用理通常是通過調(diào)用CInternetException類的對(duì)象對(duì)類的對(duì)象對(duì)目前可知的異常進(jìn)行處理。目前可知的異常進(jìn)行處理。 (8) 結(jié)束:結(jié)束:調(diào)用調(diào)用CInternetSession:Close結(jié)束會(huì)話結(jié)束會(huì)話并銷毀并銷毀CInternetSession對(duì)象。對(duì)象。 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給界面對(duì)

17、象連接接變量給界面對(duì)象連接接變量 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類的對(duì)象,所以還需類的對(duì)象,所以還需要在要在MyWinInetClass.h頭文件中加入如下代碼:頭文件中加入如下代碼:#include afxinet.h#include wininet.h20為為CMyWinInetClass類添加三個(gè)用于連接的成員函數(shù),它類添加三個(gè)用于連接的成員函數(shù),它們分別是們分別是ConnectFtp、ConnectHttp和和ConnectGopher。 CString CMyWinInetClass:ConnectFtp(const CString sUrl) CString sResult;/存儲(chǔ)連接信息的字符串存儲(chǔ)連接信

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. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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)論