C++通过http下载二进制文件

王朝vc·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

最近做了个动态库的升级程序,需要到服务器检查是否有新版本的动态库如果有的话就下载下来升级。这里与大家分享我的测试下载该二进制文件的过程。如下:

#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\n",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;

}

}

这应该是整个下载文件的核心过程了,以前看了很多资料,都写得非常丰富。希望也有更多的追求精小的同道中人^_^

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航