亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C > 正文

三種獲取網頁源碼的方法(使用MFC/Socket實現)

2020-01-26 15:39:30
字體:
來源:轉載
供稿:網友

第一個方法是使用MFC里面的

<afxinet.h>

復制代碼 代碼如下:

CString GetHttpFileData(CString strUrl)
{
     CInternetSession Session("Internet Explorer", 0);
     CHttpFile *pHttpFile = NULL;
     CString strData;
     CString strClip;
     pHttpFile = (CHttpFile*)Session.OpenURL(strUrl);
    while ( pHttpFile->ReadString(strClip) )
     {
      strData += strClip;
      }
     return strData;
}

要講一下,pHttpFile->ReadString() 每次可能只讀一個數據片斷,讀多少次取決于網絡狀況,所以要把每次讀到的數據加到總數據的尾部,用了CString 省去了緩沖區處理:)
別忘了包含頭文件#include <afxinet.h> 在工程設置,里面要選擇 using MFC 要不然編譯不了

第二種是使用WinNet的純API實現的

復制代碼 代碼如下:

#define MAXBLOCKSIZE 1024
#include <windows.h>
#include <wininet.h>

#pragma comment(lib, "wininet.lib")

void GetWebSrcCode(const char *Url);

int _tmain(int argc, _TCHAR* argv[])
{
    GetWebSrcCode("http://www.49028c.com/");

    return 0;
}

void GetWebSrcCode(const char *Url)
{
    HINTERNET hSession = InternetOpen("zwt", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
    if (hSession != NULL)
    {
        HINTERNET hURL = InternetOpenUrl(hSession, Url, NULL, 0, INTERNET_FLAG_DONT_CACHE, 0);
        if (hURL != NULL)
        {
            char Temp[MAXBLOCKSIZE] = {0};
            ULONG Number = 1;

            FILE *stream;
            if( (stream = fopen( "E://test.html", "wb" )) != NULL )
            {
                while (Number > 0)
                {
                    InternetReadFile(hURL, Temp, MAXBLOCKSIZE - 1, &Number);
                    fwrite(Temp, sizeof (char), Number , stream);
                }
                fclose( stream );
            }

            InternetCloseHandle(hURL);
            hURL = NULL;
        }

        InternetCloseHandle(hSession);
        hSession = NULL;
    }
}

第三種就是使用非封裝過的Socket實現了

復制代碼 代碼如下:

int main(int argc, char* argv[])
{
    SOCKET hsocket;
    SOCKADDR_IN saServer;
    WSADATA wsadata;
    LPHOSTENT lphostent;
    int nRet;
    char Dest[3000]; 
    char* host_name="blog.sina.com.cn";
    char* req="GET /s/blog_44acab2f01016gz3.html HTTP/1.1/r/n"
        "User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET4.0C; .NET4.0E; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)/r/n"
        "Host:blog.sina.com.cn/r/n/r/n";


    // 初始化套接字 
    if(WSAStartup(MAKEWORD(2,2),&wsadata))
        printf("初始化SOCKET出錯!");
    lphostent=gethostbyname(host_name);  
    if(lphostent==NULL)  
        printf("lphostent為空!");  
    hsocket = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);  
    saServer.sin_family = AF_INET;  
    saServer.sin_port = htons(80);  
    saServer.sin_addr =*((LPIN_ADDR)*lphostent->h_addr_list);  
    // 利用SOCKET連接  
    nRet = connect(hsocket,(LPSOCKADDR)&saServer,sizeof(SOCKADDR_IN));  
    if(nRet == SOCKET_ERROR)  
    {
        printf("建立連接時出錯!");  
        closesocket(hsocket);
        return 0;
    }
    // 利用SOCKET發送  

    nRet = send(hsocket,req,strlen(req),0);  
    if(nRet==SOCKET_ERROR)  
    {  
        printf("發送數據包時出錯!");  
        closesocket(hsocket);  
    }  
    nRet=1;  
    while(nRet>0)  
    {  
        // 接收返回數據包  
        nRet=recv(hsocket,(LPSTR)Dest,sizeof(Dest),0);  
        if(nRet>0)
            Dest[nRet]=0;
        else  
            Dest[0]=0; 
        char sDest[3000] = {0};
        UTF8_2_GB2312(sDest,nRet,Dest,nRet);
        // 顯示返回數據包的大小、內容 
        //printf("/nReceived bytes:%d/n",nRet);  
        printf("Result:/n%s",sDest);  
    }
}

另外,以上我們獲取網頁的時候,獲取到的可能是UTF8,似乎目前大多數網站都用的這種編碼吧!下面是編碼轉換。

復制代碼 代碼如下:

void UTF_8ToUnicode(wchar_t* pOut,char *pText)
{  
    char* uchar = (char *)pOut;
    uchar[1] = ((pText[0] & 0x0F) << 4) + ((pText[1] >> 2) & 0x0F);
    uchar[0] = ((pText[1] & 0x03) << 6) + (pText[2] & 0x3F);
}
void Gb2312ToUnicode(wchar_t* pOut,char *gbBuffer)
{  
    ::MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,gbBuffer,2,pOut,1);
}
void UTF_8ToGB2312(char*pOut, char *pText, int pLen) 
{  
    char Ctemp[4];  
    memset(Ctemp,0,4);
    int i =0 ,j = 0;
    while(i < pLen)
    { 
        if(pText[i] >= 0) 
        { 
            pOut[j++] = pText[i++];
        }
        else
        { 
            WCHAR Wtemp;
            UTF_8ToUnicode(&Wtemp,pText + i);
            UnicodeToGB2312(Ctemp,Wtemp);
            pOut[j] = Ctemp[0];
            pOut[j + 1] = Ctemp[1]; 
            i += 3;  
            j += 2; 
        }  
    }
    pOut[j] ='/n';
    return;
}

這是是轉換成GB2312的代碼

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产成人精品电影久久久| 最近的2019中文字幕免费一页| 青青久久av北条麻妃黑人| 亚洲精品成人av| 亚洲永久在线观看| 亚洲国产成人一区| 久久国产精品免费视频| 国产亚洲精品美女| 激情av一区二区| 欧美亚洲在线视频| 68精品久久久久久欧美| 一区二区在线免费视频| 人妖精品videosex性欧美| 91精品久久久久久综合乱菊| 欧美做爰性生交视频| 97**国产露脸精品国产| 日韩久久精品电影| 97在线观看免费高清| 久久久精品999| 亚洲视频电影图片偷拍一区| 一道本无吗dⅴd在线播放一区| 亚洲精品福利视频| 亚洲欧美成人网| 中文字幕亚洲一区在线观看| 亚洲精品美女在线| 国产精品久久久久久婷婷天堂| 伊人激情综合网| 国产精品日韩在线| 成人免费视频a| 欧美极品第一页| 久久精品成人欧美大片| 欧美精品九九久久| 91在线免费视频| 国产午夜精品全部视频播放| 久久久久久久亚洲精品| 国产精品美女久久久久久免费| 国产女人18毛片水18精品| 精品福利樱桃av导航| 欧美一级电影在线| 国产精品日韩一区| 亚洲丝袜一区在线| 亚洲美女在线视频| 热99精品只有里视频精品| 精品视频偷偷看在线观看| 亚洲精品黄网在线观看| 粉嫩av一区二区三区免费野| 欧美久久精品午夜青青大伊人| 日韩激情视频在线| 成人字幕网zmw| 中日韩美女免费视频网站在线观看| 国产成人在线一区| 亚洲女人天堂色在线7777| 日韩高清人体午夜| 在线观看日韩av| 影音先锋欧美在线资源| 欧美成人精品激情在线观看| 久久男人的天堂| 久久伊人精品视频| 国产z一区二区三区| 日本精品免费观看| 日韩欧美中文字幕在线观看| 九九精品在线观看| 国产日产欧美精品| 1769国内精品视频在线播放| 亚洲精品免费网站| 国产精品你懂得| 欧洲中文字幕国产精品| 亚洲国产高清高潮精品美女| 国产精品视频一区国模私拍| 亚洲国产成人精品久久| 97视频免费观看| 韩国国内大量揄拍精品视频| 亚洲影院色无极综合| 日韩欧美在线免费观看| 精品无人区太爽高潮在线播放| 欧美国产一区二区三区| 亚洲一区二区三区777| 国产精品久久久久福利| 在线播放精品一区二区三区| 成人黄色片网站| 91免费视频网站| 欧美中文在线字幕| 久久久久久久久国产| 97久久精品人人澡人人爽缅北| 中文字幕国产精品| 久99九色视频在线观看| 国产成+人+综合+亚洲欧美丁香花| 动漫精品一区二区| 久久综合久中文字幕青草| 中文字幕一区日韩电影| 国产精品自产拍在线观看中文| 欧美在线免费观看| 国产精品扒开腿做爽爽爽男男| 亚洲人成电影在线播放| 91精品久久久久| 亚洲视频国产视频| 尤物yw午夜国产精品视频明星| 日本欧美中文字幕| 欧美日韩中文在线| 97香蕉久久超级碰碰高清版| 成人h猎奇视频网站| 欧美激情在线视频二区| 色综合久综合久久综合久鬼88| 国语自产在线不卡| 日韩免费在线免费观看| 97av视频在线| 精品自拍视频在线观看| 久久久久一本一区二区青青蜜月| 日韩美女在线播放| 91高潮精品免费porn| 欧美男插女视频| 国产亚洲视频中文字幕视频| 国内精品小视频在线观看| 国产成人亚洲综合91精品| 97久久精品国产| 日韩av网站在线| 国产精品高潮呻吟视频| 国产精品久久久久久影视| 福利一区福利二区微拍刺激| 亚洲精品乱码久久久久久按摩观| 自拍亚洲一区欧美另类| 蜜月aⅴ免费一区二区三区| 亚洲精品美女网站| 久久99国产综合精品女同| 性夜试看影院91社区| 久久夜色精品国产欧美乱| 亚洲精品一区中文| 欧美综合激情网| 亚洲国产成人久久综合一区| 一区二区三区黄色| 狠狠色噜噜狠狠狠狠97| 国产成人在线播放| 国产啪精品视频网站| 欧美自拍大量在线观看| 亚洲男人天堂2019| 亚洲国产精品网站| 亚洲人成亚洲人成在线观看| 国产精品第一第二| 亚洲精品视频网上网址在线观看| 国产91精品久久久久久| 午夜精品久久久久久99热软件| 精品久久久久久久久久久久久| 久久精品国产免费观看| 97国产一区二区精品久久呦| 日本精品视频在线| 欧美大片在线免费观看| 久久国内精品一国内精品| 欧美有码在线观看视频| 国产亚洲欧洲高清一区| 欧美日韩在线视频一区二区| 亚洲国产另类 国产精品国产免费| 亚洲欧美国产一区二区三区| 日韩av电影在线网| 91在线精品视频| 中文字幕亚洲一区二区三区| 成人免费观看网址| 日韩视频一区在线| 欧美电影在线免费观看网站| 亚洲高清免费观看高清完整版| 欧美一性一乱一交一视频| 亚洲成人精品在线| 日韩电影在线观看永久视频免费网站| 亚洲一区二区三区视频播放| 91久久久久久久久久久久久|