【毕业学位论文】(Word原稿)多线程下载软件的设计与实现-软件工程_第1页
【毕业学位论文】(Word原稿)多线程下载软件的设计与实现-软件工程_第2页
【毕业学位论文】(Word原稿)多线程下载软件的设计与实现-软件工程_第3页
【毕业学位论文】(Word原稿)多线程下载软件的设计与实现-软件工程_第4页
【毕业学位论文】(Word原稿)多线程下载软件的设计与实现-软件工程_第5页
已阅读5页,还剩67页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

硕士学位论文 (专业学位) 多线程下载软件的设计与实现 姓 名: 张君 学 号: 1021170030 所在院系:软件学院 职业类型:工程硕士 专业领域:软件工程 指导教师:张惠娟 副指导教师: 韩雪 二 一二 年九月 A in 1021170030 2012 多线程下载软件的设计与实现 张君 同济大学 学位论文版权使用授权书 本人完全了解同济大学关于收集、保存、使用学位论文的规定,同意如下各项内容:按照学校要求提交学位论文的印刷本和电子版本;学校有权保存学位论文的印刷本和电子版,并采用影印、缩印、扫描、数字化或其它手段保存论文;学校有权提供目录检索以及提供本学位论文全文或者部分的阅览服务;学校有权按有关规定向国家有关部门或者机构送交论文的复印件和电子版;在不以赢利为目的的前提下,学校可以适当复制论文的部分或全部内容用于学术活动。 学位论文作者签名: 年 月 日 同济大学学位论文原创性声明 本人郑重声明:所呈交的学位论文,是本人在导师指导下,进行研究工作所取得的成果。除文中已经注明引用的内容外,本学位论文的研究成果不包含任何他人创作的、已公开发表或者没有公开发表的作品的内容。对本论文所涉及的研究工作做出贡献的其他个人和集体,均已在文中以明确方式标明。本学位论文原创性声明的法律责任由本人承担。 学位论文作者签名: 年 月 日 同济大学 硕士学位论文 摘要 I 摘 要 随着网络技术的普及与飞速发展,网络资源的日益丰富,下载工具已逐渐成为网络应用中不可或缺的一部分。各种下载软件通过解析不同的网络传输协议,采用不同的方式进行文件的传输与下载。但同时也存在很多常见问题,如多用户多线程同时下载,断点的记录及续传,如何更大效率利用网络带宽等等。本论文在对以往的下载工具进行一定研究的基础上,设计并实 现了此款多线程下载软件,支持多任务 多线程在线同时下载,支持断点记录和续传,更有效利用带宽的优势,同时还能记录用户的下载历史并给予 相应 推荐等等。 本论文针对 多线程 下载软件的用户需求提出了系统分析和开发流程,并给出了实现框架。论文首先对背景知识和核心技术进行了详细的阐述,包括 C+,议分析及 据库访问和使用的相关知识。然后对软件进行了系统分析、功能 分析。 使用了多线程编程机制, 据库访问,网络编程, 程技术等等。 而 后针对软件的两大模块,多线程用户下载模块和后台数据 库模块进行了架构分析 ,完成 了两个模块的实现与整合。 最终实现了一款多任务多线程,支持断点续传,高效利用带宽资源,用户友好的下载软件。 该系统使用先进成熟的编程技术,提高了系统资源的使用率,同时贯彻方便用户、系统稳定,高效快速的原则,整个系统设计合理,操作便捷,易于维护,稳定高效,并且有良好的用户体验。 最后由于整个系统提供了统一的调用接口,大大提高了所开发系统的扩展性和可维护性,对其它应用系统也具有一定参考意义 。 关键词: 线程,断点续传,同步 I he of an of in as or to to of so a on of at It of of to on of on it in + +, DO it so it of of it a to of Its Its to to it a of It 济大学 硕士学位论文 目录 录 第一章 绪论 . 1 究背景 . 1 究意义 . 2 究现状 . 2 究目标及内容 . 3 文 组织结构 . 4 第二章 相关技术 . 5 议 . 5 议概念 . 5 求方式 . 6 议头部信息 . 7 线程 . 9 程的概念 . 9 线程的概念 . 9 程同步 . 10 线程死锁 . 12 . 12 展历史 . 13 . 13 第三章 系统需求分析 . 14 统总体需求 . 14 能需求 . 16 体功能框架 . 16 线程下载 . 17 点续传 . 19 据库记录 . 20 户管理下载任务 . 21 持 动下载 . 21 同济大学 硕士学位论文 目录 统功能建模 . 22 能需求 . 22 第四章 系统设计 . 25 统架构设计 . 25 统数据库设计 . 27 线程下载模块设计 . 27 作原理及工作流程 . 28 程图介绍 . 31 要函数介绍 . 34 要属性介绍 . 36 户事件处理 . 38 据库管理模块设计 . 39 程介绍 . 39 出类的方法说明 . 41 出类的属性说明 . 42 户事件处理 . 43 第五章 多线程下载软件的实现 . 44 发环境 . 44 线程下载模块的实现 . 45 . 45 线程下载的实现 . 47 点续传的实现 . 49 户下载历史操作的实现 . 50 持 动下载的实现 . 51 据库管理模块的实现 . 52 . 52 据库记录功能的实现 . 53 第六章 总结与展望 . 56 结 . 56 望 . 57 同济大学 硕士学位论文 目录 V 参考文献 . 58 致 谢 . 60 第一章 绪论 1 第一章 绪论 本章将首先介绍该课题的研究背景,以及当前国内外关于此课题的研究成果及问题。 然后基于研究背景和目前的研究现状,提出该课题的研究意义和研究内容,并列出本论文的组织安排。 究背景 在当今的网络时代,下载软件是使用最为频繁的软件之一。几年来,下载技术也在不停地发展。最原始的下载功能仅仅是个“下载”过程,即从 传统的下载方式存在三个问题:第一个问题,由于网络的不稳定性,一旦连接断开使得下载过程中断,就 需要从文件开始后再次下载 。第二个问题,随着现在的网络资源越来越丰富,个人电脑硬件配置的提升,很多网络资源的体积都非常庞大,比如高清电影,高清电视剧,大型 3致不能在短时间内一次性下载完毕,需要分几次下载。第三个问题,虽然网络带宽逐渐提 高,但下载速度很少能够达到理论最高值,有很大一部分带宽都被浪费 。 由此,多线程下载和断点续传的概念出现了。所谓多线程下载,可以在客户端通过多个线程同时进行下载。在中国,最早流行的多线程下载软件是“网络蚂蚁”,在“网络蚂蚁”软件流行开后,许多下载软件也都纷纷效仿,是否应用“多线程下载”技术甚至能支持多少个下载线程都成了人们评测下载软件的要素。“多线程下载”的基础是 即支持“断点续传”。这样, 在下载时可以把文件分成若干部分,每一部分创建一个下载线程进行下载。 在网络环境下,使用多线程技术实现下载,可以提高 率和带宽的利用率,从而提高下载速度。为了避免网络不稳定而造成的下载中断后的重传,引入断点续传机制,可提高下载的效率。 多线程断点续传 技术,自从兴起以后受 到了越来越多的关注,人们也在用自己的方法使这门技术不断完善,该 技术融合了多线程的知识,计算机网络的知识(主要是与套接字相关的内容),同步异步的知识等等。在对这些知识的综合运用中,程序员 可以编写出令用户满意的下载软件 。 在现在的软件中,很多 地方需要下载模块,如软件本身自动更新,如更新大量数据等。本文介绍了基于 给出了一个多线程下载同济大学 硕士学位论文 多线程下载软 件的设计与实现 2 工具的实现过程。 很多下载软件都支持下载历史记录查看的功能,数据库功能的引入使下载工具的更能更加完善,更加实用。在当今的数据库技术中,有一门称作为 技术受到了人们的欢迎,逐渐淘汰了原来的 术, 术可以更方便地操作数据库,存取数据也更加方便,快捷, 这个项目中就利用了 现了下载历史记录查看的功能 。 究意义 基于前一节 所介绍 的研究背景,本节将 提出本课题的研究意义。 本课题将要设计并实现基于 图将该技术成熟化,产品化,文档化,必将推广多线程下载在各类应用中的使用。 (1) 多线程下载技术。此点为本课题的重点技术。多线程的使用无疑能够增加下载的效率和易用性,使下载更加方便,便捷和快速。但是多线程的问题也就浮现了出来,由于线程运行的不确定性,所以经常会导致一些敏感数据的错误。这个课题在一定程度上是熟悉多线程编程以及多线程环境下的调试和多线程中比较关键的同步问题 。 (2) 通过数据库对系统信息 进行管理。在该系统中,使用 术连接数据库,对下载信息,用户记录等等进行数据管理 。 (3) 封装系统模块。本课题采用动态链接库的技术对核心功能进行模块化封装,提供出统一的借口,使得该功能在 于 二次开发 。 究现状 研究现状最开始的下载就是简单的建立一个从浏览器到服务器的链接,然后用户一直等待直到下载过程结束。久而久之,这种下载方式带来了很多问题,如果下载文件过大,突然断网之后,用户必须重新下载;并且下载的网速受到很大的限制,尤其在上网高峰阶段 。 为了解决这个 问题,洪以容先生的“网络蚂蚁”横空出世,并且在短时间内受到全国网友的追捧,“网络蚂蚁”首先采用了多线程下载技术,下载一个任务的时候,几个线程一起下载,这样既能充分利用网络资源,也能增加下载速率,而且断点续传技术的应用也大第一章 绪论 3 大地提高了“网络蚂蚁”的实用性,用户不再烦恼下载过程中突然网络断开这类的事故。但是,这门技术兴起以后,也受到了一些质疑,从本质上说“网络蚂蚁”只是饮鸩止渴而已,它并没有根本解决带宽低所带来的问题,可是却起到了抛砖引玉的作用,自此之后,各种各样下载技术的革新与突破的出现就如雨后春笋一样。这门技 术自从 1998年问世以来,得到了广泛的应用,成为越来越多下载软件的核心技术,例如:网际快车,迅雷,超级旋风等等。而且,这门技术也逐渐成为各类应用软件重要的附加功能 。 如今,多线程下载已经不仅仅局限于下载工具,很多软件本身都需要下载功能。如软件自身的更新,尤其是很多网络应用的客户端,代表之一便是网络游戏。网络游戏大多是3D 画面,数据量非常大,经常需要更新很多文件,在这种情况下,多线程下载显得尤为重要。还有就是很多软件的本地数据,比如手机上的离线地图数据,经常需要更新,数据量也很大。但现在相关的下载软件或者下载 模块都还是采取的单线程传统下载方式,经常用户在断网后,下次只能采取从头下载,耗时耗力,用户体验很差 。 究目标及内容 基于对当前多线程下载的现状和未来发展的分析,本课题将深入多线程下载解决方案中的技术关键,设计并实现基于 建系统原型,并进行测试与分析。 本课题的重要研究内容包括: (1) 深入研究了多线程技术,分析了该技术的现状以及发展趋势。 (2) 设计并实现了基于 进行分析与测试。 (3) 实现了 (3) 实现 了动态连接库对模块进行封装,并提供相对标准的接口。 本课题具有以下目标: (1) 本课题将深入分析多线程下载结局方案中的技术关键,设计并实现支持多线程和断点续传的下载模块,构建系统原型,并进行测试与分析比对。 (2) 本课题是基于 议的多线程断点续传下载工具。针对目前市场上已有系统存在的各种问题,本文分析了客户的需求及多种用户体验,开发出更符合市场趋势和用户喜好的产品。 (3) 封装该软件模块,提供统一接口,以便于系统移植和二次开发。 同济大学 硕士学位论文 多线程下载软 件的设计与实现 4 文组织结构 本论文将以以下几个章节组成: 第一章 绪论。 简述课题的研究背景,提出了课题的研究目标,由此给出本文的研究范围,并简单介绍了本文的组织结构。 第二章 系统相关背景介绍。本章介绍了相关一些技术背景,为下文使用相关技术提供良好的背景基础。首先介绍了 括 议的概念,请求信息,请求方式等。然后介绍了多线程,包括相关概念,线程同步。然后介绍了本课题需要使用的 后介绍了 第三章 对课题 的需求分析。本章介绍了该课题的需求,包括功能需求、性能需求。 第四章 先从架构角度对系统进行分析,然后 针对本课题两 个重要的模块,多线程用户下载模块和后台 据库模块,分别进行了相关分析。 包括相关流程图,函数接口等详细设计。 第五章 针对本课题两个重要的模块,多线程用户下载模块和后台 据库模块,进行了相关实现,包括类的定义,关键代码介绍,以及最终效果图 。 第六章 结论与展望。本章进行了总结和展望。第二章 相关技术 5 第二章 相关技术 第 一章主要介绍了本课题的研究背景,国内外相关软件的研究现状,提出了本课题的研究意义,主要研究内容。 本章将对系统设计和实现中所使用的开发技术和开发工具进行整体的介绍,这些技术和工具的选择,遵循了成 熟性、灵活性、通用性、安全性的原则,下面就对拟使用的信息技术一一进行介绍。 将 本课题所开发的多线程下载软件应用到的核心技术包括:计算机网络, 线程编程, 态链接库等等。对这些知识和概念的了解对理解本文及后续工作都是必要的。本章将对这些背景知识进行详细分析,介绍其基本原理,为下文做好准备 。 议 超文本传输协定( 互联网上应用最为广泛的一种网络协议。所有的 件都必 须遵守这个标准。设计 初的目的是为了提供一种发布和接收 面的方法。 议概念 作的结果, 他们最终发布了一系列的 中最著名的就是616。 616定义了 一个客户端和服务器端请求和应答的标准( 客户端 是终端用户,服务器端是网站。通过使用 览器、网络爬虫或者其它的工具,客户端发起一个到服务器上指定端口(默认端口为 80)的 求。 称这个客户端为用户代理( 应答的服务器上存储着一些资源,比如 称这个应答服务器为源服务器( 在用户代理和源服务器中间可能存在多个中间层,比如代理,网关,或者隧道( 尽管 P 协议是互联网上最流行的应用, 议并没有规定必须使用它和基于它支持的层。事实上, 网协议上,或者在其他网络上实现。何能够提供这种保证的协议都可以被其使用。 同济大学 硕士学位论文 多线程下载软 件的设计与实现 6 通常,由 立一个到服务器指定端口(默认是 80端口)的接。 务器则在那个端口监听客户端发送过来的请求。一旦收到请求,服务器向客户端发回一个状态行,比如“ 00 和响应的消息,消息的消息体可能是请求的文件、错误消息、或者其它一些信息。 用 不是 原因在于打开一个网页必须传送很多数据,而 议提供传输控 制,按顺序组织数据,和错误纠正。 通过 者 议请求的资源由统一资源标识符( 标识 。 求方式 议中共定义了八种方法(有时也叫“动作”)来表明 定的资源的不同操作方式: 回服务器针对特定资源所支持的 求方法。也可以利用向 务器发送 *的请求来测试服务器的功能性。 服务器索要与 求相一致的响应,只不过响应体将不会被返回。这一 方法可以在不必传输整个响应内容的情况下,就可以获取包含在响应消息头中的元信息。 特定的资源发出请求。注意: 法不应当被用于产生“副作用”的操作中,例如在 中一个原因是 能会被网络蜘蛛等随意访问。 指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。 求可能会导致新的资源的建立和 /或已有资源的修改。 指定资源位置上传其最新内容。 求服务器删除 标识的资源。 显服务器收到的请求,主要用于测试或诊断。 议中预留给能够将连接改为管道方式的代理服务器。 方法名称是区分大小写的。当某个请求所针对的资源不支持对应的请求方法的时候,服务器应当返回状态码 405( 当服务器不认识或者不支持对应的请求方法的时候,应当返回状态码 501( 务器至少应该实现 法,其他方法都是可选的。当然,所有的方法支持的实现都应当符合下述的方法各自的语义定义 。此外,除了上述方法,特定的 相关技术 7 服务器还能够扩展自定义的方法 。 议头部信息 议头部信息 部协议包含着请求信息与响应信息,从服务器下载文件时应该先解析头部信息,从而确定下载对象的大小,是否支持多线程等等。所以,先了解 例如: 求信息头部: 图 求信息头部 现在,针对 议请求信息头部进行解析: 定义客户端可以处理的媒体类型,按优先级排序;在一个以逗号为分隔的列中, 可以定义 多种类型和使用通配符 定义客户端可以理解的编码机制。 定义客户端乐于接受的自然语言列表。 一个响应头标,它允许服务器指明:将在给定的偏移和长度处,为资源组成部分的接受请求。该头标的值被理解为请求范围的度量单位。例如 一个响应头标,用于定义访问一种资源所必需的授权(域和被编码的用户 口令)。例如: 一个用于定义缓存指令的通用头标。例如: 0 个用于表明是否保存 接为开放的通用头标。例如: 同济大学 硕士学位论文 多线程下载软 件的设计与实现 8 一种定义基本 实体头标,为了在实体范围内解析相对 果没有定义 标解析相对 用 在 且绝对)或使用 求。例如: ,标明一个实体是如何编码的。例如:指定包含于请求或响应中数据的字节长度。例如: 382 指定包含于请求或响应中的资源定位( 如果是一绝。对 作 为 被 解 析 实 体 的 相 对 出 发 点 。 例 如 : ;标明被插入字节的低位与高位字节偏移,也标明此实体的总长度。例如: 1001000 标明发送或者接收的实体的 型。例如: 送 息的日期。例如: 108:42:51 指定实体的有效期。例如: 05 008 12:00:00 一种请求头标,给定控制用户代理的人工用户的电子邮件地址。例如: 被请求资源的主机名。对于使用 请求而言,此头标是强制性的。例如: 指定被请求资源上次被修改的日期和时间。例如: 0 8:42:51 对于一个已经移动的资源,用于重定向请求者至另一个位置。与状态编码 302(暂时移动)或者 301 (永久性移动)配合使用。例如: ,便是有意请求只来自请求链(代理)的下一个服务器的认证。 一种请求头标域,标明产生请求的初始资源。对于 单,它包含此表单的 面的地址。例如: 。 例 如 : 6(第二章 相关技术 9 种通用头标,标明对应被接受方反向的消息体实施变换的类型。例如: 允许服务器指定一种新的协议或者新的协议版本,与响应编码 101(切换协议)配合使用。例如: 定义用于产生请求 的软件类型(典型的如 览器)。例如: .0(T) 线程 “线程”是指每个运行程序中的独立运行程序片段。所谓“多线程处理”是指同时可以对几个线程进行处理。如用户界面处理,即程序一方面接受用户输入,一方面做出响应给予输出,而不是让用户等待当前任务完成再开始响应。由于多线程处理迅速便捷,有更好的用

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论