编写断点续传和多线程下载模块概述在当今的网络时代,下载软件是使用最为频繁的软件之一
几年来,下载技术也在不停地发展
最原始的下载功能仅仅是个“下载”过程,即从WEB服务器上连续地读取文件其最大的问题是,由于网络的不稳定性,一旦连接断开使得下载过程中断,就不得不全部从头再来一次
随后,“断点续传”的概念就出来了,顾名思义,就是如果下载中断,在重新建立连接后,跳过已经下载的部分,而只下载还没有下载的部分
无论“多线程下载”技术是否洪以容先生的发明,洪以容使得这项技术得到前所未有的关注是不争的事实
在“网络蚂蚁”软件流行开后,许多下载软件也都纷纷效仿,是否具
quot;多线程下载技术、甚至能支持多少个下载线程都成了人们评测下载软件的要素
多线程下载的基础是WEB服务器支持远程的随机读取,也即支持断点续传
这样,在下载时可以把文件分成若干部分,每一部分创建一个下载线程进行下载
现在,不要说编写专门的下载软件,在自己编写的软件中,加入下载功能有时也非常必要
如让自己的软件支持自动在线升级,或者在软件中自动下载新的数据进行数据更新这都是很有用、而且很实用的功能
本文的主题即怎样编写一个支持断点续传和多线程的下载模块
当然,下载的过程非常复杂,在一篇文章中难以全部阐明,所以,与下载过程关系不直接的部分基本上都忽略了,如异常处理和网络错误处理等,敬请各位读者注意
我使用的开发环境是C++Builder5
0,使用其他开发环境或者编程语言的朋友请自行作适当修改
HTTP协议简介下载文件是电脑与WEB服务器交互的过程,它们交互的语言的专业名称是协议
传送文件的协议有多种,最常用的是HTTP(超文本传输协议)和FTP(文件传送协议),我采用的是HTTP
HTTP协议最基本的命令只有三条:Get、Post和Head
Get从WEB服务器请求一个特定的对象,比如HTML页面或者一个文件,WEB服务器