一个简单的使用wininet的http/ftp文件下载程序
2005-07-14 21:21
746 查看
一个简单的使用wininet的http/ftp文件下载程序
(一)目的
使用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环境下下载网络文件的简易方法。在此基础上,可以对文件进行更为复杂的操作,例如用于信息检索和其它网页处理方面。
(一)目的
使用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环境下下载网络文件的简易方法。在此基础上,可以对文件进行更为复杂的操作,例如用于信息检索和其它网页处理方面。
相关文章推荐
- 一个简单的使用wininet的http/ftp文件下载程序
- wget用法wget是一个从网络上自动下载文件的自由工具。它支持HTTP,HTTPS和FTP协议,可以使用HTTP代理.
- wget是一个从网络上自动下载文件的自由工具,支持通过HTTP、HTTPS、FTP三个最常见的TCP/IP协议下载,并可以使用HTTP代理
- 一个java实现的简单文件下载程序
- 使用Java程序来实现HTTP文件的队列下载
- ETL工具kettle与java结合使用程序生成一个简单的转化文件
- Android 的一个简单的Http下载文件的方法
- 使用Java程序来实现HTTP文件的队列下载
- 安卓中使用HTTP从网络下载文件到SD卡程序
- HDFS设计思路,HDFS使用,查看集群状态,HDFS,HDFS上传文件,HDFS下载文件,yarn web管理界面信息查看,运行一个mapreduce程序,mapreduce的demo
- QT QFtp使用实例 从FTP下载一个文件
- 【C语言】没事可以试试这个小程序,使用文件操作,模拟实现一个简单的文件拷贝工具!
- 使用一般处理程序HTTPHandler下载文件
- 一个简单的servlet2,response的使用,文件下载
- Linux下之使用简单3种创建文件的命令,并实现一个Html和JavaScript小程序
- QT QFtp使用实例 从FTP下载一个文件
- 使用wininet进行FTP文件上传和下载
- HDFS设计思路,HDFS使用,查看集群状态,HDFS,HDFS上传文件,HDFS下载文件,yarn web管理界面信息查看,运行一个mapreduce程序,mapreduce的demo
- 使用PyQt5编写一个简单的GUI程序(pyside 有 pyside-uic 把ui文件转成py文件,pyside-rcc 把qrc文件转成 py文件导入就行了)
- Linux下使用Shell脚本向FTP服务器上传或下载一个文件