断点续传的实现原理

多线程传输实现

 

多线程传输实现

 

实现原理:

 

将源文件按长度为分为

N

块文件

,

然后开辟

N

个线程

,

每个线程传输一块

,

最后合并所有

线线程文件

.

比如一个文件

500M

我们按长度可以分

5

个线程传输

.

第一线程从

0-100M,

第二

线程从

100M-200M......

最后合并

5

个线程文件

实现流程:

 

1.

客户端向服务端请求文件信息

(

名称

,

长度

2.

客户端跟据文件长度开辟

N

个线程连接服务端

 

3.

服务端开辟新的线程与客户端通信并传输文件

 

4.

客户端将每线程数据保存到一个文件

 

5.

合并所有线程文件

 

 

断点续传:

 

所谓的断点续传就是指

:

文件在传输过程式中被中断后

,

在重新传输时

,

可以从上次的断

点处开始传输

,

这样就可

 

节省时间

,

和其它资源

 

实现关键:

 

在这里有两个关键点

 

其一是检测本地已经下载的文件长度和断点值;

 

其二是在服务端调整文件指针到断点处

 

 

实现方法:

 

我们用一个简单的方法来实现断点续传的功能

.

在传输文件的时候创建一个临时文件用

来存放文件的断点位置

 

在每次发送接受文件时

,

先检查有没有临时文件

,

如果有的话就从临时文件中读取断点值

,

并把文件指针移动到

 

断点位置开始传输

,

这样便可以做到断点续传了

 

实现流程:

 

 

首次传输其流程如下

 

1.

服务端向客户端传递文件名称和文件长度

 

2.

跟据文件长度计算文件块数

(

文件分块传输请参照第二篇文章

3.

客户端将传输的块数写入临时文件

(

做为断点值

4.

若文件传输成功则删除临时文件

 

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

 

1.

客户端从临时文件读取断点值并发送给服务端

 

2.

服务端与客户端将文件指针移至断点处

 

3.

从断点处传输文件


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值