WEB开发网
开发学院软件开发VC 如何从Internet上有效而稳定地下载文件 阅读

如何从Internet上有效而稳定地下载文件

 2010-01-09 20:31:44 来源:WEB开发网   
核心提示:使用这些bit必须包含mmsystem.h并链接winmm.lib,它们用于时间选择,如何从Internet上有效而稳定地下载文件(2),告诉用户下载的速度,例子代码只统计了下载速度,按照本文所描述的那样,你可以自己编写一个程序来从 Internet上有效地、稳定地下载文件,你可以扩展这个功能,比如估计还剩多少时间

使用这些bit必须包含mmsystem.h并链接winmm.lib,它们用于时间选择,告诉用户下载的速度。例子代码只统计了下载速度,你可以扩展这个功能,比如估计还剩多少时间。

do
{
if (! InternetReadFile(hConnect, szTemp, 16384, &dwSize))
{
fclose (pFile);
return INTERNET_ERROR_READFILE;
}

此调用循环中,每次下载一个16KB的数据 块。如果download请求失败,则文件被关闭并返回错误。

if (!dwSize)
break;
else
fwrite(szTemp, sizeof(char), dwSize, pFile);

如果dwSize为0,则意味着一个EOF,循环退出。否则由InternetReadFile读取的数据内容被写到本地文件中。

dwBytes+=dwSize;
if(dwByteToRead && hwndProgress)
{
SendDlgItemMessageA(hwndProgress, idProgressBar, WM_USER+2, (dwBytes*100)/dwByteToRead, 0);
UpdateWindow(hwndProgress);
}

这个代码中,dwBytes是从文件读取的数据量,它不断增加,如果文件长度是有效的,则进度窗口句柄被指定,进度条被更新已表示下载进度 。

FLOAT fSpeed = 0;
fSpeed = (float)dwBytes;
fSpeed /= ((float) time)/1000.0f;
fSpeed /= 1024.0f;

这些bit代码用于根据所花时间计算下载速度 和读取的数据量。

if(hwndProgress)
{
char s[260];
sprintf(s, "%d KB / %d KB @ %1.1f KB/s", dwBytes/1024, dwByteToRead/1024, fSpeed);
SetDlgItemTextA(hwndProgress, idStatusText, s);
UpdateWindow(hwndProgress);
}

设置和处理进度窗口的状态文本,表示下载的文件大小和下载速度。

end = timeGetTime();
time = end - start;
if(time == 0)
time = 10;
时间被更 新
} // do
while (TRUE);
循环结束
fflush (pFile);
fclose (pFile);
return 0;
}

最后,函数结束,关闭文件并清除硬件驱动的缓冲。返回0表示成功。

使用这个代码段,按照本文所描述的那样,你可以自己编写一个程序来从 Internet上有效地、稳定地下载文件。实现细节请参见例子。

上一页  1 2 

Tags:如何 Internet 有效

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接