博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用C++实现功能下载文件
阅读量:6985 次
发布时间:2019-06-27

本文共 2096 字,大约阅读时间需要 6 分钟。

       今天问一个同学C++实现的下载链接下载并保存给定的文件,互联网搜索。看到这样的事情在网上。因此,改变下直接带来,因为他的代码是在VC++,我导入到VS2010中出现点小问题。所以改了下贴了个VS中亲測可执行的代码。在此记录下。

參考的资料     感觉里面大家讨论的都不错

事实上这个使用到MFC中的一些函数。能够做成图形界面的。

以下贴下自己小小改动的代码

//#define _WIN32_WINNT 0x0502#include 
#include
#include
using namespace std;#define RECVPACK_SIZE 2048bool DownloadSaveFiles(const char* url,const char* strSaveFile) {//下载文件并保存为新文件名称 bool ret=false; CInternetSession Sess(_T("lpload")); Sess.SetOption(INTERNET_OPTION_CONNECT_TIMEOUT , 5000); //5秒的连接超时 Sess.SetOption(INTERNET_OPTION_SEND_TIMEOUT , 5000); //5秒的发送超时 Sess.SetOption(INTERNET_OPTION_RECEIVE_TIMEOUT , 5000); //5秒的接收超时 Sess.SetOption(INTERNET_OPTION_DATA_SEND_TIMEOUT , 5000); //5秒的发送超时 Sess.SetOption(INTERNET_OPTION_DATA_RECEIVE_TIMEOUT, 5000); //5秒的接收超时 DWORD dwFlag = INTERNET_FLAG_TRANSFER_BINARY|INTERNET_FLAG_DONT_CACHE|INTERNET_FLAG_RELOAD ; CHttpFile* cFile = NULL; char *pBuf = NULL; int nBufLen = 0 ; do { try{ cFile = (CHttpFile*)Sess.OpenURL((CString)url,1,dwFlag); DWORD dwStatusCode; cFile->QueryInfoStatusCode(dwStatusCode); if (dwStatusCode == HTTP_STATUS_OK) { //查询文件长度 DWORD nLen=0; cFile->QueryInfo(HTTP_QUERY_CONTENT_LENGTH, nLen); //CString strFilename = GetFileName(url,TRUE); nBufLen=nLen; //cout << "nLen=" << nLen << endl; if (nLen <= 0) break;// //分配接收数据缓存 pBuf = (char*)malloc(nLen+8); ZeroMemory(pBuf,nLen+8); char *p=pBuf; while (nLen>0) { //每次下载8K int n = cFile->Read(p,(nLen
Close(); Sess.Close(); delete cFile; } return ret;}int main() { //測试用例 if(DownloadSaveFiles("http://www.nirsoft.net/utils/nircmd.zip","d:/cppdld_nircmd.zip") == true) { cout << "下载成功" << endl; }else{ cout << "下载失败"<< endl; } return 0;}

版权声明:本文博主原创文章,博客,未经同意不得转载。

你可能感兴趣的文章
Java的设计模式----strategy(策略模式)
查看>>
android系统下替换so库等操作
查看>>
python中的数据类型,存储,实现
查看>>
.htaccess FollowSymlinks影响rewrite功能
查看>>
201671010117 2016-2017-2 《Java程序设计》Java第二周学习心得
查看>>
编程语言的概念
查看>>
App_Offline.htm 一个静态页面实现整站维护时统一页面
查看>>
create-react-app部署到GitHub Pages时报错:Failed to get remote。origin.url
查看>>
TypeScript入门知识五(面向对象特性二)
查看>>
TextBox字符串转换为数字类型
查看>>
HTML5的可视化开发工具Maqetta Designer
查看>>
leetcode 29. Divide Two Integers
查看>>
axis调用webservice客户端开发
查看>>
Activiti5第八弹,ProcessEngineConfiguration和ProcessEngine
查看>>
细说C#多线程那些事 - 线程同步和多线程优先级
查看>>
单例模式
查看>>
发送验证码倒计时
查看>>
程序员看中的浏览器
查看>>
浙大pat甲级题目---1021. Deepest Root (25)
查看>>
CCRD_TOC_2008年第2期
查看>>