断点续传、多线程上载

现在已经有很多断点续传、多线程下载的软件了,比如网际快车等等。下面设计的程序是“断点续传、多线程上载”。

 

缘起:客户每天都有大量文件上传服务器。这些文件很多,并且体积挺大,FTP有时候会出一些问题,导致传递失败,要重新上传。

 

基本解决方案:

1:把文件分割成块,每次只是传递一个文件块。

2:一个文件可以起多个发送任务(线程),同时发送。

3:记录文件发送状态,在网络出现问题时(或者客户端意外终止),知道上次发送文件大小和位置指针。再重新链接以后,继续发送。

 

对象和线程

这里面涉及到一个显示窗体form1,有timer可以随时更新发送状态;一个上传类Uploader(对应于一个文件);Task对象(也就是一个文件);FileThunk对象(每一个任务,对应于一个线程);WebService接受文件类。

发送状态需要记录在数据库。测试状态下,数据记录在xml文件。基本格式如下:

      

Code

数据表结构也基本类似这样。

 

核心代码

1form1. 这个主要是显示。主要函数是 添加任务(Task);更新任务状态

 
浏览文件,创建任务
显示和更新状态,返回DataTable
执行任务


2:Uploader的核心代码:主要是启动线程。

Code


3:Task类的主要代码:主要是初始化任务,其他诸如和对数据的保存/提取 

Code


4:FileChunk的核心代码:主要是如何上传文件

Code



5:WebService的核心代码

Code



   小结

技术难度不大;现实实用;上传速度尚可。

  程序运行截图一个
断点续传、多线程上载_第1张图片

你可能感兴趣的:(断点续传)