




下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
第24章WinInet編程很多情況下,開發(fā)者需要編寫Internet客戶端程序,使用Internet協(xié)議以訪問網(wǎng)絡上的服務器信息。WinInet(Win32InternetExtensions)為編寫Internet客戶端提供專門的接口。WinInet是比Winsock更高層的接口,它只適合于編寫HTTP、FTP和Gopher三種客戶端應用程序。VisualC++提供了兩種使用WinInet的方法,一種是直接調(diào)用Win32Internet函數(shù),另一種是使用MFCWinInet類來使用WinInet。本章將對詳細介紹WInInet相關的函數(shù)與類的使用方法。24.1WinInetAPI簡介WinInet接口提供了對普通Internet協(xié)議的訪問,這些協(xié)議包括:HTTP、FTP和Gopher。在編寫HTTP、FTP和Gopher客戶端應用程序時,WinInet的性能遠遠超過了WinSock,使用起來更方便、更專業(yè)化。在使用WinInet開發(fā)Internet應用程序時,開發(fā)者不必了解各種協(xié)議的細節(jié)就可以編寫出高水平的Internet客戶端。本節(jié)將對WinInetAPI函數(shù)進行詳細的介紹。24.1.1通用WinInetAPI函數(shù)通用WinInetAPI函數(shù)提供對所有Internet協(xié)議的支持,包括HTTP、FTP和Gopher。此外還包括對URL的處理,對Cookie的存取和設置。表24.1列出了常用的WinInetAPI函數(shù)。24.1.2HTTP函數(shù)HTTP函數(shù)負責HTTP文件和目錄的管理和瀏覽,提供HTTP規(guī)范的標準接口。表24.2列出了WinInet相關的HTTP函數(shù)。24.1.3FTP函數(shù)FTP函數(shù)負責FTP文件、目錄的管理和瀏覽;提供FTP規(guī)范的標準接口。表24.3列出了WinInet相關的FTP函數(shù)。24.1.4Gopher函數(shù)Gopher函數(shù)主要用于控制InternetGopher應用程序的創(chuàng)建和使用,表24.4列出了WinInet相關的Gopher函數(shù)。24.2MFCWinInet類Microsoft對WinInetAPI函數(shù)進行了封裝,使用戶開發(fā)Internet客戶端更加容易。MFC共提供了13個WinInet類,它們實現(xiàn)了一系列Internet的訪問功能。本節(jié)將對這些類進行詳細介紹。24.2.1CInternetSession類CInternetSession類是CObject類的直接派生類,其派生結構如圖24.1所示。該類負責創(chuàng)建并初始化一個或多個同步的Internet會話,如果需要,還可以處理與代理服務器的連接。任何使用WinInet類的應用程序都必須首先建立一個CInternetSession對象。24.2.2CInternetConnection類CInternetConnection類用于管理與Internet服務器的連接。由CObject類派生,其派生結構如圖24.2所示。它是CHttpConnection、CFtpConnection、CGopherConnection類的基類。24.2.3CHttpConnection類MFC的CHttpConnection類負責管理與HTTP服務器的連接,它由CInternetConnection派生而來。其派生結構如圖24.3所示。24.2.4CFtpConnection類MFC的CFtpConnection類負責管理與FTP服務器的連接。它由CInternetConnection派生而來,其派生結構如圖24.4所示。24.2.5CGopherConnection類MFC的CGopherConnection類負責管理與Gopher服務器的連接。它由CInternetConnection派生而來,其派生結構如圖24.5所示。24.2.6CInternetFile類CInternetFile類是CHttpFile類和CGopherFile類的基類,其派生結構如圖24.6所示。CInternetFile類及其派生類允許對使用Internet協(xié)議的遠程系統(tǒng)的文件進行訪問。24.2.7CHttpFile類CHttpFile類提供了在一個HTTP服務器中查找和讀文件的功能,由CInternetFile類派生而來,其派生結構如圖24.7所示。24.2.8CGopherFile類CGopherFile類提供了在一個Gopher服務器中查找和讀文件的功能,該類派生于CInternetFile類,其派生結構如圖24.8所示。24.2.9CFileFind類CFileFind類提供了在本地系統(tǒng)檢索文件的功能,是CObject類的直接派生類,其派生結構如圖24.9所示。CFileFind類的構造函數(shù)如下:CFileFind();24.2.10CFtpFileFind類CFtpFileFind類提供了在FTP服務器上檢索文件的功能,由CFileFind類派生而來,其派生結構如圖24.10所示。24.2.11CGopherFileFind類CGopherFileFind類提供了在Gopher服務器上檢索文件的功能。由CFileFind類派生而來,其派生結構如圖24.11所示。24.2.12CGopherLocator類CGopherLocator類用于從Gopher服務器獲取一個Gopher“定位器”,并確定定位器的類型,使該定位器可用于CGopherFileFind。其派生結構如圖24.12所示。24.2.13CInternetException類CInternetException類的對象代表一個與Internet操作有關的異常情況。CInternetSession類是CException類的派生類,其派生結構如圖24.13所示。24.3用WinInet類進行編程使用MFCWinInet類可以使得從HTTP、FTP或gopher服務器讀取信息像從硬盤讀取文件一樣容易,無需直接對WinSock或TCP/IP編程即可使用HTTP、FTP和gopher協(xié)議。使用WinInet類進行網(wǎng)絡編程具有以下優(yōu)點:緩存I/O。數(shù)據(jù)的類型安全句柄。許多函數(shù)的默認參數(shù)。常見Internet錯誤的異常處理。自動清理打開的句柄和連接。24.3.1HTTP客戶端編程步驟典型HTTP客戶端應用程序編程步驟如下:(1)連接到HTTP服務器。使用CInternetSession::GetFtpConnection(),返回CFtpConnection對象。(2)開始HTTP會話。創(chuàng)建CInternetSession對象,初始化WinInet并連接到服務器。(3)連接到HTTP服務器。使用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)結束HTTP會話。處置CInternetSession對象,自動清理打開的文件句柄和連接。24.3.2FTP客戶端編程步驟典型FTP客戶端應用程序編程步驟如下所示:(1)開始FTP會話。創(chuàng)建CInternetSession對象,初始化WinInet并連接到服務器(2)更改為服務器上新的FTP目錄。使用CFtpConnection::SetCurrentDirectory(),更改服務器上當前連接的目錄。(3)查找FTP目錄中的第一個文件。使用CFtpFileFind::FindFile(),查找第一個文件。如果沒有找到文件,則返回FALSE。(4)查找FTP目錄中的下一個文件。使用CFtpFileFind::FindNextFile(),查找下一個文件。如果沒有找到該文件,則返回FALSE。(5)打開FindFile()或FindNextFile()找到的文件讀取或寫入。使用FindFile()或FindNextFile()返回的文件名來使用CFtpConnection::OpenFile(),打開服務器上的文件讀取或寫入。返回CInternetFile對象。(6)從文件中讀取或寫入文件。使用CInternetFile::Read()或CInternetFile::Write(),使用提供的緩沖區(qū)讀取或寫入指定數(shù)目的字節(jié)。(7)處理異常。使用CInternetException類,處理所有常見的Internet異常類型。(8)結束FTP會話。處置CInternetSession對象,自動清理打開的文件句柄和連接24.3.3Gopher客戶端編程步驟典型Gopher客戶端應用程序編程步驟如下:(1)開始Gopher會話。創(chuàng)建CInternetSession對象,初始化WinInet并連接到服務器。(2)連接到Gopher服務器。使用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)結束Gopher會話。處置CInternetSession對象,自動清理打開的文件句柄和連接。24.4利用WinInet類實現(xiàn)FTP客戶端在現(xiàn)實生活中,F(xiàn)TP以其獨特的優(yōu)勢,廣泛地應用于Internet文件傳輸。本節(jié)通過一個簡單的FTP客戶端的實例,說明如何使用WinInet類創(chuàng)建Internet客戶端應用程序。24.4.1系統(tǒng)總體設計本FTP客戶端程序實現(xiàn)如下功能:通過用戶名、密碼登錄到指定的FTP服務器。在文件列表框中列出FTP服務器當前目錄所在的文件和目錄。以“另存為”對話框實現(xiàn)對選定文件的下載。以“打開”對話框,上傳選擇的文件。24.4.2創(chuàng)建工程下面列出的是創(chuàng)建FTP客戶端應用程序的具體步驟:24.4.3連接FTP服務器在CFTPClientDlg類中,為【連接服務器】按鈕添加單擊事件,以使FTP客戶端連接到服務器。24.4.4獲取當前目錄所有文件在CFTPClientDlg類中,添加自定義函數(shù):InsertFilesToList(),該函數(shù)的功能為:在建立與FTP服務器的連接后,獲取服務目錄和文件,并在將所有文件插入列表框。24.4.5返回上級目錄在CFTPClientDlg類中,為【返回上層目錄】按鈕添加單擊事件OnButtonBack(),以返回FTP服務器當前目錄的上級目錄。24.4.6下載文件在CFTPCl
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度礦山事故水池建設與安全生產(chǎn)保障合同
- 二零二五年度城市別墅購房定金合同
- 2025年度景觀施工項目安全監(jiān)理合同
- 2025年度電視劇劇本編排與制作合同
- 二零二五年度廣告?zhèn)髅絼趧张汕矄T工服務合同
- 酒店住宿意外事故責任免除與2025年度安全保障協(xié)議
- 二零二五年度老年贍養(yǎng)贍養(yǎng)金及醫(yī)療救助合同
- 辦公區(qū)域搬遷安排及流程梳理通知
- 關于銷售團隊建設與管理的年度工作總結報告
- 美發(fā)店勞動合同協(xié)議書
- 中小學食堂財務培訓
- 四年級數(shù)學(四則混合運算帶括號)計算題專項練習與答案
- 2024解析:第十二章機械效率-基礎練(解析版)
- 建筑工程項目合作備忘錄
- 靈活用工管理
- 全媒體運營師試題庫(含答案)
- 2024至2030年中國礦用隔爆型監(jiān)控攝像儀行業(yè)投資前景及策略咨詢研究報告
- 大學生職業(yè)素養(yǎng)訓練(第六版)課件 第二單元學習職業(yè)禮儀
- 北京市燕山區(qū)中考一模英語試題及答案
- 腦卒中-腦卒中的康復治療
- 2024至2030年中國超聲波加工機床行業(yè)深度調(diào)研及發(fā)展預測報告
評論
0/150
提交評論