`
61party
  • 浏览: 1054248 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

实现断点续传的两种思路

阅读更多
.












在7月份分别做了多线程下载和断点续传 ,但当时只是测试,用了大文件分块传输的方法

实现流程

首次传输其流程如下

1.服务端向客户端传递文件名称和文件长度
2.跟据文件长度计算文件块数
3.客户端将传输的块数写入临时文件(做为断点值)
4.若文件传输成功则删除临时文件

首次传输失败后将按以下流程进行

1.客户端从临时文件读取断点值并发送给服务端
2.服务端与客户端将文件指针移至断点处
3.从断点处传输文件

这是当时的思路,但是因为当时用了CFile类实现,而不是SDK,所以我不得不重写,重写时断点续传又重新成了问题

1.下载的是文件列表
2.因为效率不再采用分块传输
3.如何记录文件列表与断点值

鉴于我以前做的断点续传,思路被禁固了一样 转不开弯 直到后来KING老大提示才饶过这个弯 其思路如下

1.客户端用CreateFile以OPEN_EXISTING方式打开要下载的文件列表
2.若成功说明有断点文件,则用GetFileSize得到大小做为断点
3若失败说明文件不存在,则创建一个文件

思路是相当简单的,而且一个好处是不用记录断点值 干净利落 呵呵







分享到:
评论

相关推荐

    HTML5实现文件断点续传的方法

    目前比较常用的断点续传的方法有两种,一种是通过websocket接口进行文件上传,另一种是通过ajax,两种方法各有千秋,虽然websocket听起来比较高端些,但是除了用了不同的协议外其他的算法基本上都是很相似的,并且...

    Android开发三剑客_part1

    编码和测试三个阶段 《Android开发三剑客:UML 模式与测试》着眼于Android产品的两个重要环节 设计和测试 分为上篇 中篇和下篇 上篇以Android多线程断点续传下载器为例 细致入微地讲解UML的9种Diagram:用例图 类图 ...

    Android开发三剑客_part2

    编码和测试三个阶段 《Android开发三剑客:UML 模式与测试》着眼于Android产品的两个重要环节 设计和测试 分为上篇 中篇和下篇 上篇以Android多线程断点续传下载器为例 细致入微地讲解UML的9种Diagram:用例图 类图 ...

    C#文件上传的简单实现

    一、分析  本次博客,主要解决文件上传等一系列问题,将从两方面来论述,即1G以内文件和1G以上文件。  对于上传1G以内的文件,可以采用基本的三种... (2)断点续传  (3)使用插件  (4)非插件形式实现 二、

    python入门到高级全栈工程师培训 第3期 附课件代码

    06 FTP之断点续传 08 FTP之进度条 09 FTP之cd切换 11 FTP之创建文件夹及MD5校验思路 第33章 01 操作系统历史 02 进程的概念 03 线程的概念 04 线程的调用以及join方法 05 setDaemon方法和继承式调用.baiduyun....

    java源码包---java 源码 大量 实例

    两个例子,无状态SessionBean可会话Bean必须实现SessionBean,获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,计算利息等;在有状态SessionBean中,用累加器,以对话状态存储起来,创建EJB对象,并将...

    asp.net知识库

    在ASP.Net中两种利用CSS实现多界面的方法 如何在客户端调用服务端代码 页面一postback,它就显示页面的最顶端,怎样让它定位在某一位置? 如何保证页面刷新后的滚动条位置 清除网页历史记录,屏蔽后退按钮! 如何传值...

    java源码包2

    两个例子,无状态SessionBean可会话Bean必须实现SessionBean,获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,计算利息等;在有状态SessionBean中,用累加器,以对话状态存储起来,创建EJB对象,并将...

    java源码包3

    两个例子,无状态SessionBean可会话Bean必须实现SessionBean,获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,计算利息等;在有状态SessionBean中,用累加器,以对话状态存储起来,创建EJB对象,并将...

    java源码包4

    两个例子,无状态SessionBean可会话Bean必须实现SessionBean,获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,计算利息等;在有状态SessionBean中,用累加器,以对话状态存储起来,创建EJB对象,并将...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    Java EJB中有、无状态SessionBean的两个例子 两个例子,无状态SessionBean可会话Bean必须实现SessionBean,获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,计算利息等;在有状态SessionBean中,用...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    Java EJB中有、无状态SessionBean的两个例子 两个例子,无状态SessionBean可会话Bean必须实现SessionBean,获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,计算利息等;在有状态SessionBean中,用...

    JAVA上百实例源码以及开源项目源代码

    两个例子,无状态SessionBean可会话Bean必须实现SessionBean,获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,计算利息等;在有状态SessionBean中,用累加器,以对话状态存储起来,创建EJB对象,并将...

    JAVA上百实例源码以及开源项目

    两个例子,无状态SessionBean可会话Bean必须实现SessionBean,获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,计算利息等;在有状态SessionBean中,用累加器,以对话状态存储起来,创建EJB对象,并将...

Global site tag (gtag.js) - Google Analytics