码迷,mamicode.com
首页 > 编程语言 > 详细

多线程断点下载原理

时间:2016-08-08 21:10:36      阅读:140      评论:0      收藏:0      [点我收藏+]

标签:

上传到服务器原理

 技术分享  

 

商议客户端将文件长度Length、文件名NameId文件id以协议的形式发送到服务器。服务器判断Id是否为空,不为空时表示是断点上传,从存储断点上传文件的数据库中根据文件Id查询文件保存的Path并将Path返回,根据Path从上次的历史文件中读取上传的断点位置(断点位置记录在临时文件的*.log文件里的Properties部分了)

如果Id为空,则为初次上传,生成id,将idpath添加到数据库里

然后向客户端发送协议头Id(?包括记录断点位置的变量position=0表示初次,=p表示断点位置)并判断是否传输完毕。传输完毕删除数据库中的记录和临时文件,没有传输完毕继续传输

文件上传到客户端:

 技术分享

 

原理:

客户端从本地数据库(数据库包括文件本地路径path,服务器返回的id)查询有无上传记录有的话构造协议(文件长度、文件名字、id);没有的话构造协议中id=nullsocket请求返回字段idposition与如果第一次上传返回服务器随机生成唯一idposition=0就是第一次上传,将(idpath)添加到数据库;否则就是断点续传id=sourceidposition为上次上传的历史记录位置,从position开始上传并监视是否完成,上传完成时删除数据库存储的记录,没有上传完成时继续上传。

下面是多线程下载

 技术分享

 

原理:

连接服务器获取下载文件的大小,根据数据库中存放的信息(id=下载路径,Date=map(线程id,进度position))判断文件是否已经存在。不存在,划分每个线程下载文件大小,启动多线程下载;存在,从数据库获取每个线程已加载的长度。开始下载并监视,未完成,将每个线程已下载位置存放在数据库;完成,结束

多线程断点下载原理

标签:

原文地址:http://www.cnblogs.com/yanghongliang/p/5750819.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!