• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            牽著老婆滿街逛

            嚴以律己,寬以待人. 三思而后行.
            GMail/GTalk: yanglinbo#google.com;
            MSN/Email: tx7do#yahoo.com.cn;
            QQ: 3 0 3 3 9 6 9 2 0 .

            Windows Internet編程基礎(chǔ)--WinInet

            ??可以使用 WinInet 添加 FTP 支持以從應用程序內(nèi)下載文件和上載文件。可以重寫 OnStatusCallback 并使用 dwContext 參數(shù)在搜索和下載文件時向用戶提供進度信息。
            ?
            ? 本文包含以下主題:
            ?
            ? 創(chuàng)建一個非常簡單的瀏覽器
            ? 下載 Web 頁
            ? FTP 文件
            ? 檢索 Gopher 目錄
            ? 傳輸文件時顯示進度信息?

            ? 以下摘錄的代碼說明如何創(chuàng)建一個簡單的瀏覽器、下載 Web 頁、FTP 文件和搜索 gopher 文件。它們并不代表完整的示例,并且不都包含異常處理功能。
            ?
            ? 創(chuàng)建一個非常簡單的瀏覽器
            ??#include?<afxinet.h>
            ??
            //assumes?URL?names?have?been?initialized
            ??CInternetSession?session("My?Session");
            ??CStdioFile
            *?pFile?=?NULL;
            ??
            //use?a?URL?and?display?a?Web?page
            ??while?(lpszURL?=?DisplayPage())
            ??
            {
            ?????pFile?
            =?session.OpenURL(lpszURL);
            ?????
            while?(pFile->Read(szBuff,1024)?>?0)
            ?????
            {
            ????????
            //read?file
            ?????}

            ?????delete?pFile;
            ??}

            ??session.Close();
            ? 下載 Web 頁
            ??//this?code?excerpt?also?demonstrates?try/catch?exception?handling
            ??#include?<afxinet.h>
            ??
            //assumes?server,?port,?and?URL?names?have?been?initialized
            ??CInternetSession?session("My?Session");
            ??CHttpConnection
            *?pServer?=?NULL;
            ??CHttpFile
            *?pFile?=?NULL;
            ??
            try
            ??
            {
            ?????CString?strServerName;
            ?????INTERNET_PORT?nPort;
            ??
            ?????pServer?
            =?session.GetHttpConnection(strServerName,?nPort);
            ?????pFile?
            =?pServer->OpenRequest(CHttpConnection::HTTP_VERB_GET,?strObject);
            ?????pFile
            ->AddRequestHeaders(szHeaders);
            ?????pFile
            ->SendRequest();
            ?????pFile
            ->QueryInfoStatusCode(dwRet);
            ??
            ?????
            if?(dwRet?==?HTTP_STATUS_OK)
            ?????
            {
            ?????????UINT?nRead?
            =?pFile->Read(szBuff,?1023);
            ?????????
            while?(nRead?>?0)
            ?????????
            {
            ?????????????
            //read?file
            ?????????}

            ?????}

            ?????delete?pFile;
            ?????delete?pServer;
            ??}

            ??
            catch?(CInternetException*?pEx)
            ??
            {
            ?????
            //catch?errors?from?WinInet
            ??}

            ??session.Close();
            ? FTP 文件
            ??#include?<afxinet.h>
            ??
            //assumes?server?and?file?names?have?been?initialized
            ??CInternetSession?session("My?FTP?Session");
            ??CFtpConnection
            *?pConn?=?NULL;
            ??
            ??pConn?
            =?session.GetFtpConnection(lpszServerName);
            ??
            //get?the?file
            ??if?(!pConn->GetFile(pstrRemoteFile,?pstrLocalFile))
            ?????
            //display?an?error
            ??delete?pConn;
            ??session.Close();
            ? 檢索 Gopher 目錄
            ??#include?<afxinet.h>
            ??
            //assumes?file?name?has?been?initialized
            ??CInternetSession?session("My?Gopher?Session");
            ??CGopherConnection
            *?pConn?=?NULL;
            ??CGopherFileFind
            *?pFile;
            ??
            ??pConn?
            =?session.GetGopherConnection("gopher.yoursite.com");
            ??pFile?
            =?new?CGopherFileFind(pConn);
            ??BOOL?bFound?
            =?pFile->FindFile(lpszFileToFind);
            ??
            while?(bFound)
            ??
            {
            ?????bFound?
            =?pFile->FindNextFile();
            ?????
            //retrieve?attributes?of?found?file
            ??}

            ??delete?pFile;
            ??delete?pConn;
            ??session.Close();
            ? 使用 OnStatusCallback
            ? 使用 WinInet 類時,可以使用應用程序的 CInternetSession 對象的 OnStatusCallback 成員來檢索狀態(tài)信息。如果您派生自己的 CInternetSession 對象、重寫 OnStatusCallback 并啟用狀態(tài)回調(diào),MFC 將調(diào)用 OnStatusCallback 函數(shù)并提供那個 Internet 會話中所有活動的進度信息。
            ?
            ? 由于單個會話可能會支持若干個連接(這些連接在它們的生存期內(nèi)可能執(zhí)行許多不同的獨特操作),因此 OnStatusCallback 需要一個機制用特定的連接或事務(wù)來標識每個狀態(tài)更改。該機制由分配給 WinInet 支持類中的許多成員函數(shù)的上下文 ID 參數(shù)提供。該參數(shù)的類型總是 DWORD 并且總是命名為 dwContext。
            ?
            ? 分配給具體某個 Internet 對象的上下文只用于標識此對象在 CInternetSession 對象的 OnStatusCallback 成員中導致的活動。對 OnStatusCallback 的調(diào)用將接收幾個參數(shù);這些參數(shù)共同工作以通知應用程序哪個事務(wù)和連接的進度是多少。
            ?
            ? 當創(chuàng)建 CInternetSession 對象時,可以指定構(gòu)造函數(shù)的 dwContext 參數(shù)。CInternetSession 本身不使用上下文 ID,而是將上下文 ID 傳遞給 InternetConnection 派生的任何對象,這些對象不顯式獲得它們自己的上下文 ID。反過來,如果您不顯式指定不同的上下文 ID,則那些 CInternetConnection 對象將上下文 ID 繼續(xù)傳遞給它們創(chuàng)建的 CInternetFile 對象。另一方面,如果您確實指定了自己的特定上下文 ID,對象和它所做的任何工作將與那個上下文 ID 關(guān)聯(lián)。可以使用上下文 ID 來標識 OnStatusCallback 函數(shù)中為您提供的狀態(tài)信息。
            ?
            ? 傳輸文件時顯示進度信息
            ? 例如,如果編寫一個應用程序來創(chuàng)建兩個連接,一個連到 FTP 服務(wù)器以讀取文件,一個連到 HTTP 服務(wù)器以獲取 Web 頁,那么,您將有一個 CInternetSession 對象、兩個 CInternetConnection 對象(一個是 CFtpSession,另一個是 CHttpSession)和兩個 CInternetFile 對象(分別用于兩個連接)。假如對 dwContext 參數(shù)使用了默認值,將不能區(qū)分指示 FTP 連接進度的 OnStatusCallback 調(diào)用和指示 HTTP 連接進度的調(diào)用。如果指定以后可在 OnStatusCallback 中測試的 dwContext ID,您將知道是哪個操作生成的回調(diào)

            posted on 2006-04-14 21:14 楊粼波 閱讀(943) 評論(0)  編輯 收藏 引用 所屬分類: 文章收藏

            国产免费久久精品99re丫y| 无码任你躁久久久久久老妇| 一本色道久久88精品综合| 久久有码中文字幕| 久久免费香蕉视频| 久久WWW免费人成—看片| 国产精品久久久久一区二区三区| 中文精品久久久久国产网址| 66精品综合久久久久久久| 青青国产成人久久91网| 亚洲欧美日韩精品久久| 大香网伊人久久综合网2020| 国产精品无码久久久久| 久久99精品国产麻豆不卡| 国产高潮国产高潮久久久91 | 一本久久综合亚洲鲁鲁五月天亚洲欧美一区二区 | 久久无码国产专区精品| 久久久久久久女国产乱让韩| 99久久精品免费看国产一区二区三区| 久久国产欧美日韩精品免费| 久久精品国产2020| 69SEX久久精品国产麻豆| 亚洲国产二区三区久久| 欧美国产精品久久高清| 久久无码高潮喷水| 久久99国产精品久久久| 精品综合久久久久久88小说| 久久亚洲国产精品成人AV秋霞 | 久久亚洲精品无码播放| 国产精品久久久久蜜芽| 久久精品亚洲精品国产色婷| 99久久99久久精品国产片果冻| 亚洲国产成人久久综合区| 色诱久久久久综合网ywww| 亚洲国产天堂久久综合网站| 国产69精品久久久久APP下载| 99久久精品国产免看国产一区| 久久亚洲精品无码播放| 国内精品久久久久久久97牛牛| 久久久久国产精品三级网| 久久夜色精品国产噜噜亚洲AV|