登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

梦想之鹰的天空

天高任鸟飞......放飞....心情..........放飞.....梦想

 
 
 

日志

 
 

C++ Wininet API  

2008-04-23 07:29:56|  分类: 程序设计 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

(一)目的
使用windows提供的wininet api进行简单的网络http/ftp文件下载和察看(按文本文件显示)。

(二)准备工作
1 建立vc6的console application,选择支持mfc。
2 加入头文件wininet.h
3 加入 #pragma comment(lib, "Wininet.lib")

(三)源代码
<Main Function> - 主程序接受用户输入的url地址(必须是完整的url,如ftp://, http://)当用户键入quit时退出。
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
    int nRetCode = 0;
   
    char url[1000];//存放URL地址

    //用户键入quit时退出
    while(cin >> url && strcmp(url, "quit") != 0)
    {
        try
        {
            cout << "目标URL:" << url << endl;
            Download(url);
        }
        catch (char* e)//显示出错信息
        {
            cout << e << endl << endl;
        }
       
    }   

    return nRetCode;
}

<Work Function> - 调用windows wininet api进行ftp/http文件的下载。下载的文件将默认为acsii文本文件进行显示。
void Download(char url[])
{
    char buffer[100000];//下载文件的缓冲区
    DWORD bytes_read;//下载的字节数

    //打开一个internet连接
    HINTERNET internet=InternetOpen("HTTP Downloader", INTERNET_OPEN_TYPE_PRECONFIG,
        NULL, NULL, NULL);

    if(!internet)
        throw "InternetOpen error!";
   
    //打开一个http url地址
    HINTERNET file_handle=InternetOpenUrl(internet, url, NULL, 0,
        INTERNET_FLAG_RELOAD, 0);

    if(!file_handle)
        throw "InternetOpenUrl error! - Maybe you should add Http:// or Ftp://";
   
    //从url地址中读取文件内容到缓冲区buffer
    BOOL b = InternetReadFile(file_handle, buffer, 100000, &bytes_read);
    if(!b)
        throw "InternetReadFile error!";

    buffer[bytes_read] = 0;
   
    cout << buffer << endl << endl;
   
    //关闭连接
    InternetCloseHandle(internet);
}

(四)说明
本文给出了windows环境下下载网络文件的简易方法。在此基础上,可以对文件进行更为复杂的操作,例如用于信息检索和其它网页处理方面。

  评论这张
 
阅读(2090)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018