基于多线程文件传输关键技术研究和实现.docVIP

基于多线程文件传输关键技术研究和实现.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于多线程文件传输关键技术研究和实现

基于多线程文件传输关键技术研究和实现   摘要:针对网络应用中需要可靠、高效的文件传输问题,通过对多线程技术和断点续传技术的工作原理及实现机制研究分析,引入了C#中类的方法进行程序优化,减少了编程代码,提高了编程和执行效率。通过在C#环境下进行编程仿真分析,实验结果表明创建适当线程数的多线程断点续传技术能有效利用系统资源、提高文件传输的可靠性、高效性等方面有其明显的优势。   关键词:多线程;断点续传;文件传输   中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2016)21-0048-03   很多网络应用软件,需要从服务器下载数据,需要高效的技术提高网络下载速度,提高工作效率,但数据传输过程中因为网络中断、计算机死机重启、掉电而中断文件传输不可避免,为应对这些突发事件,实现用户重新上线时在上一次下载的基础上继续下载文件资源。需要开发高效的多线程下载客户端模块,负责线程的管理,进度的记录等,可以充分利用网络带宽实现文件的快速、稳定、高效传输。多线程网络资源传输技术和断点续传技术是提高资源下载效率的关键技术。   1 多线程下载技术和断点续传技术   1.1 多线程下载基本原理   多线程下载技术是获取到的文件的大小, 根据文件大小将该文件分块, 每个线程负责其中一块文件块的传输工作[1-2]。服务器允许同一个用户与之建立多个连接, 并为每个连接分配一个线程, 客户端通过与服务器建立多个连接可以获得服务器更多的服务时间, 特别是在有其他用户与服务器建立连接的情况下, 利用多线程技术可以在与其他用户在竞争服务器服务时间上更有优势[3]。   1.2 多线程文件客户端传输过程   1)客户端与服务器的连接。   在进行文件传输之前,客户端与服务器必须建立好连接。并构造和发送固定格式的信息头请求,然后等待接收服务器的响应信息,包括重定向,如果失败或成功就退出。   2)客户端取得待下载文件信息。   在发送请求后,获取文件名称,文件存储位置和文件大小等有关信息。   3)客户端创建多个线程,进行文件分块。   取得文件信息后,创建多个线程,按照线程数将文件分割成合适的数据块,确定每个数据块的起点和大小[4]。为每一个文件块分配一个线程,如果有thread个线程传输filesize大小的文件,那么每个线程负责传送filesize/thread个字节,当不能整除时,最后一个线程再负责剩余部分字节,也就是负责filethread +filesize % thread字节数据传输。   4)进行多线程并行下载。   5)各线程文件块下载完成,组合成完整的文件。   多线程文件下载的流程如下图:   1.3 断点续传实现机制   断点续传实质是记录线程上一次下载断开的位置,并在下一次建立连接后直接从上次传输中断的位置继续传输。断点续传的关键问题有两点:   1)传输中断时,记录断点,保存本地的下载信息,需要建立临时文件来保存本地下载信息,多线程下载信息包含各线程已下载字节数,文件的指针和文件的大小等信息[5]。当传输中断时,多个线程断点下载信息会记录在临时文件中,并将文件指针指向已下载文件的末尾。   2)续传,指任务恢复连接后,系统检查本地下载信息,首先判断本地是否存在所下载的文件,如果存在,读取已下载文件的下载信息,系统会根据记录的断点位置,自动将指针定位在未完成线程的断点位置,自动从断点处传输每个线程的剩余部分的数据,这需要在客户端向服务器发送请求。   断点续传实现流程如下图:   2 支持断点续传的多线程程序仿真   这里使用C#实现支持断点续传功能的多线程客户端下载模块开发仿真。在开发过程中用到了C#中的HttpWebRequest和HttpWebResponse类,客户端首先通过HttpWebRequest.Create()创建下载链接,通过GetResponse().ContentLength取得服务器上文件的长度,然后初始多个数组存储各线程状态,文件名、起始和结束位置信息等。然后划分线程,平分数据块,将剩余部分划分到最后一个线程中,定义线程数组,启动接收线程,使用HttpWebResponse的GetResponseStream()方法,从服务器上返回数据流。通过调用自定义函数ReceiveFile()接收和处理每个线程。   使用自定义函数ReceiveFile()处理每个线程下载任务,并实现断点续传。在其中使用System.IO.file类用于典型的文件操作,用于获取和设置文件特性或有关文件创建、访问及写入以及断点续传等操作。先使用System.IO.File.Exists()方法判断下载文件是否存在,如果存在,使用System.IO.File.

文档评论(0)

3471161553 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档