欢迎来到天天文库
浏览记录
ID:8543909
大小:574.00 KB
页数:19页
时间:2018-03-31
《简单多线程下载工具的设计与实现 - 威客中国》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、多线程下载工具的设计2.3可行性分析可行性研究实质上是要进行一次大大压缩简化了的系统分析和设计的过程,也就是在较高层次上以较抽象的方式进行的系统分析和设计的过程。它的目的不是解决问题,而是确定问题是否值得去解决。2.3.1技术可行性分析通过根据软件的需求,对本设计的技术实现进行全面的了解,可以采用java的多线程机制,通过设置HTTP1.1的请求头信息,可以实现连接远程资源的指定偏移位置,通过这个特性我们就可以实现多线程及断点续传的功能。所以根据目前已知的技术,在技术上实现多线程下载没有问题。2.3.2经济可行性分析从开发这个简单多线程的意义上我们可以看出,赢利不是制作这个下载工具的
2、目的,而只是为了单纯的探索多线程下载的基本原理,综合运用所学的知识,提高自己的动手能力,及查阅资料继续学习的能力。所以它也就不存在经济的问题。而从它的意义上来说,绝对值得制作这个下载工具。2.3.3操作可行性分析由于这个多线程下载工具所面向的是广大的互联网用户,所以在设计中采用简洁的GUI界面。也因为简洁的界面设计使得系统在操作方式上很容易让用户接受。在操作上对一没有计算机操作经验的人来说也不会有难度,因此在操作上也是行得通的。3.概要设计3.1系统结构图本系统采用现今比较流行的三层结构进行系统分层,这三层分别为GUI表现层,控制层,底层下载操作,文件及网络操作,系统的结构图如图3-
3、1图3-1系统结构图3.2功能流程图新建下载及恢复下载功能流程图见图3-2,在这里新建任务与恢复任务仅是在任务的构建方式上不一样,在网络操作及下载操作上都没有什么区别,这样的实现主要得益于对代码重用性的设计。图3-2新建/恢复任务流程图暂停与停止的功能实现流程图见图3-3,从这个图中我们可以发现和新建任务,恢复任务一样具备同样的代码利用,停止线程过程是同一个,他们两个在功能上不同仅是暂停任务时我们需要将暂停的断点记录下来,而停止任务却是将断点记录给删除,并删除已下载的部分文件信息。图3-3暂停/停止任务流程图4.详细设计4.1获取网络资源获取网络资源是下载过程中的第一个步骤,也是很关
4、键的一步。由于网络的问题是多变的,有可能指定的下载资源已经不存在,或者网络连接有问题,等一系列的问题,因些在连接资源过程中我们得对于相应的连接进行相应在测试,它是否可行,它的信息是否是我们想要的,这一节主要就是讨论这个功能。4.1.1功能说明要下载一个远程的资源就需我们能够先定位到指定的资源,并建立连接。在本模块中实现的基本功能说是与远程的资源进行连接,并测试其连接状态。4.1.2设计说明在做这个模块之前我们得先来了解下HTTP协议。HTTP协议就是超文件传输协议,采用了请求/响应模型。客户端向服务器发送一个请求,请求头包含请求的方法、URI、协议版本、以及包含请求修饰符、客户信息和
5、内容的类似于MIME的消息结构。服务器以一个状态行作为响应,相应的内容包括消息协议的版本,成功或者错误编码加上包含服务器信息、实体元信息以及可能的实体内容。1、连接资源通过JDK的net包中包含的URL及HttpURLConnection两个类对网上资源进行操作。URL指定网络资源的位置,而HttpURLConnection中则封装了操作指定网络资源的方法。在本系统中我设计了类ConnectionManager,它的主要功能就是通过提供指定的URL获取HttpURLConnection对象,为控制层代码利用HttpURLConnection对象操作网络文件提供支持。控制层代码只要调用
6、ConnectionManager.getConnection(URL)即可。2、测试连接在网络连接过程中可能出现各种各样的问题,而我们需要的只是连接成功的正确网络资源,所以我们有必要对通过ConnectionManager获取的与服务器的连接进行测试。如果测试成功,即能正确获取到指定的资源,包括获取是否支持断点续传的功能,之后我们才对指定的资源进行下载操作,否则抛弃信息,并对用户进行相应的提示。通过对HTTP1.1协议的了解,我们知道只要我们发送一个指定的请求头信息,服务器就会返回一个携带着请求后服务器处理完成的信息,这个信息就包括请求是否成功等。我们要做的就是构造这样一个带有指定
7、的请求的头信息发送到服务器端,然后查看它返回的响应码,因为我们完成可能从响应码中去了解一个请求是否成功。要设计一个什么样的请求头才能符合我们的要求的测试效果呢?通过设计请求头信息中的RANGE字段我们可以指定请求URL指向目标资源的偏移量,而不是从头开始读。这个也是断点及多线程下载资源的一个重要属性,我们将在后面作更详细说明。如果我们设置完这个头信息并发送到服务器端,如果源请求的资源存在并且服务器支持断点续传,这时它返回的响应码信息就是206,如果存在但不
此文档下载收益归作者所有