• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    用VC++和Winsock實現與HTTP服務器通話

    發布: 2007-7-14 21:11 | 作者: 佚名    | 來源: 網絡轉載     | 查看: 39次 | 進入軟件測試論壇討論

    領測軟件測試網 作者:Ji Hong  
      
    一、引 言  
    ---- Windows Socket API是一套開放的、支持多種協議的Windows下的網絡編程接口,它包 括一個標準的 Berkeley  
    Socket功能調用的集合,以及為Windows所作的重要擴充。 Windows Socket經過不斷完善并在眾  
    多公司的全力支持下,已成為Windows網絡編程 的事實上的標準。  
      
    ---- 本 文 將 在VC++ 5.0 環 境 下 介 紹 一個基于 Winsock 的 HTTP 客戶應用程序。 讀者可以基于本例  
    同樣的原理實現其他Inte.net常用協議(time, SMTP, POP3, Telnet, FTP 等)的客戶應用程序。  
      
    二、一個簡單的瀏覽器  
    ---- 我將創建一個簡單的瀏覽器,以說明如何通過Winsock基于HTTP協議實現HTTP 客戶應 用程序。  
      
    ---- 首先我將創建一個幫助函數 LogFile(),該函數把傳遞給它的字符串寫到磁盤文件 中。然后再創建 本示例的核心函數 --  
    HttpClient() 。在這個核心函數中,我將通 過 Winsock 連接到 HTTP 服務器上 (本例中我將使用計算機世界日報  
    168.160.224.185)。當連接成功后,發送 Get 命令到 HTTP 服務器 去下載指定路徑  
    上(/99/tips/)的文件。通過幫助函數 LogFile() 把下載的數據記錄到本地磁盤文 件中。  
      
    char fname[MAXPATH];  
    void LogFile(char *p)  
    {  
    FILE *fp=fopen(fname,"a+");  
    fprintf(fp,"%s\n",p);  
    fclose(fp);  
    }  
      
    BOOL HttpClient(void)  
    {  
    WSADATA ws;  
    SOCKET s;  
    struct sockaddr_in addr;  
      
    int iResult;  
    long lResult;  
    char strSubAddr[100], strBuffer[100];  
      
    lResult = WSAStartup(0x0101,&ws);  
    s = socket(AF_INET,SOCK_STREAM,0);  
      
    addr.sin_family = AF_INET;  
    addr.sin_port = htons(80);  
    addr.sin_addr.s_addr = inet_addr  
    ("168.160.224.185"); // 計算機世界日報  
    iResult=connect(s,(struct sockaddr *)  
    &addr, sizeof(addr));  
    if(SOCKET_ERROR == iResult)  
    {  
    // 連接失敗  
    WSACleanup();  
    return FALSE;  
    }  
    else {  
    // 連接成功  
    strcpy(strSubAddr, "GET /99/tips/ \r\n");  
    strcpy(fname, "index.htm");  
    iResult = send(s, strSubAddr,strlen(strSubAddr),0);  
      
    // 下載文件  
    do {  
    strset(strBuffer,' ');  
    iResult = recv(s,strBuffer,sizeof(strBuffer),0);  
    LogFile(strBuffer);  
    } while( iResult !=0 );  
    }  
      
    WSACleanup();  
    return TRUE;  
    }  
      
    三、測試  
    ---- 打開Visual C++ 5.0, 用MFC創建基于對話框的工程Test, 并在對話框上放 置"Test" 按 鈕,  
    然后添加測試代碼。  
      
    Void CTestDlg::OnTest()  
    {  
    HttpClient();  
    }  
      
    ---- 編譯并運行該測試程序,在測試對話框中,單擊 "Test" 按鈕,  
      
    ---- "http://www.computerworld.com.cn/99/tips/"的index.htm文件將被下載到本地。  
      
    四. 結 論  
    ---- 這應該就是Netscape Navigator,Internet Explorer以及其他瀏覽器實現Internet訪  
    問的基本代碼了. 在這些瀏覽器中,其他百分之九十以上的代碼主要用于HTML顯示等 本地處理上。  
      
    ---- 讀者如果有興趣,基于這些代碼,再加入一些解釋HTML命令的代碼,就可以正確顯示 所下載的HTML文件,  
    那也就是說將擁有自己版本的一個百分之百的瀏覽器了。何不一試 ?

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>