随着信息技术的发展,网络资源的大小也愈发扩大,动辄几G几十G。在网络宽带有限的情况下需要短时间内把几G十几G的资源下载下来无疑是很难的,如果在下载过程中网络出现错误,导致网络连接断开或者需要暂停下载,导致资源需要重头下载是非常耗时的。因此当网络中断后,接着上次下载的进度进行再次下载是非常必要的,如迅雷等下载工具的断点续传的功能。 要实现断点续传的功能,从原理上可分为两种:
原理一:
①当资源上传至服务器,根据文件长度分配内存空间时,把文件根据一定长度分成若干个子文件。
②用户下载该文件时,实际上是将其子文件一个一个的下载至本地,当网络中断前下载任务未完成,记录其下载的完整的子文件进度(如下载到某个子文件等,如某子文件未下载完全,取消其下载进度,再次下载时从该文件重新开始下载进度)。
③用户网络重连,进行下载时从未下载的子文件开始下载。
④下载完成后,将所有子文件重新合并成一个文件,即完成下载任务。
原理二:
①当资源上传至服务器,根据文件长度分配内存空间。
②用户下载该文件,网络中断后,根据偏移量或对比下载至本地的文件长度记录其下载进度。
③用户网络重连后,将根据偏移量或对比服务器与本地的文件长度,将光标移至还没下载部分的开头进行下载。
④未下载部分以追加的形式与已下载部分进行合并,直至下载任务完成,在本地形成完整的文件。
|
|