C++通过http下载二进制文件
来源:互联网 发布:linux安装控制面板 编辑:程序博客网 时间:2024/06/07 00:32
最近做了个动态库的升级程序,需要到服务器检查是否有新版本的动态库如果有的话就下载下来升级。这里与大家分享我的测试下载该二进制文件的过程。如下:
#include <stdio.h>
#include <windows.h>
#include <wininet.h>
#define MAXBLOCKSIZE 1024
void download(const char*);
int main(int argc, char* argv[]){
if(argc > 1){
download((const char*)argv[1]);
}else{
printf("Usage: auto-Update url");
}
return 0;
}
/**
* 执行 文件下载 操作
* @param Url: The target action url
*
*/
void download(const char *Url)
{
HINTERNET hSession = InternetOpen("RookIE/1.0", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
if (hSession != NULL)
{
HINTERNET handle2 = InternetOpenUrl(hSession, Url, NULL, 0, INTERNET_FLAG_DONT_CACHE, 0);
if (handle2 != NULL)
{
printf("%s",Url);
byte Temp[MAXBLOCKSIZE];
ULONG Number = 1;
FILE *stream;
if( (stream = fopen( "F:/LeadBridge/new.exe", "wb" )) != NULL )//这里只是个测试,因此写了个死的文件路径
{
while (Number > 0)
{
InternetReadFile(handle2, Temp, MAXBLOCKSIZE - 1, &Number);
//fprintf(stream, (const char*)Temp);
fwrite(Temp, sizeof (char), Number , stream);
}
fclose( stream );
}
InternetCloseHandle(handle2);
handle2 = NULL;
}
InternetCloseHandle(hSession);
hSession = NULL;
}
}
这应该是整个下载文件的核心过程了,以前看了很多资料,都写得非常丰富。希望也有更多的追求精小的同道中人^_^
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>- C++通过http下载二进制文件
- C++通过http下载二进制文件
- C++通过http下载二进制文件
- C++通过http下载二进制文件
- xml http 下载二进制文件
- c语言URL通过Http下载mp3 格式
- Android-网络:Http下载二进制文件(歌曲、更新包、图片)
- Java 通过 HTTP 下载文件
- java通过http下载文件
- javaweb中下载二进制文件
- C# FTP下载二进制文件
- spring-boot二进制文件下载
- [VB.NET]通过http协议下载文件
- Fedora通过Http Proxy下载git
- 通过WINET实现的http断点下载
- 通过HTTP协议实现多线程下载
- android 通过http网络下载图片 并
- Android通过http下载文件实现小记
- 第2章 Java语言基础
- 泛型编程与设计新思维
- 第3章 程序流程控制
- 树型结构数据在基本表中的存储及维护
- 类与对象的概念
- C++通过http下载二进制文件
- MSSQLSERVER中如何快速获取表的记录总数
- insmod module 失败(skyeye + armlinux)
- 如何通过崩溃地址找到出错的代码行(ZT)
- 封装机制封装的概念
- 收藏几段SQL语句和存储过程
- 成员方法
- SRM 387 DIV2 [600]
- C++网络开发包ACE环境的配置与调试