基于http协议的多线程下载工具的实现.pdf

收藏

编号:20181110221320218260    类型:共享资源    大小:254.49KB    格式:PDF    上传时间:2019-02-16
  
2
金币
关 键 词:
Http多线程下载 HTTP协议 实现多线程下载 Http 协议实现多线程 多线程下载 Http 基于HTTP协议 的多线程下载工具 http 下载软件 实现多线程 下载http HTTP协议实现多线程下载
资源描述:
基于HTTP协议的多线程下载工具的实现 文章编号:1003—5850(2009)10—0052—04 基于HTTP协议的多线程下载工具的实现 The Realization of Multi—thread Downloading TOOl based on HTTP 李晶媛韩慧莲 (中北大学仪器科学与动态测试教育部重点实验室 太原030051) 【摘 要】分析了在网络环境中基于HTTP协议进行多线程下载和断点续传的原理和实现方法,给出了一个多 线程下载工具的实现。该下载工具的设计基于VC++的多线程技术和CSocket编程,采用线程的创建和管理、 各下载线程字节数分配等关键技术,实现了从Web服务器到客户端的多线程下载及断点续传。 【关键词】HTTP,多线程下载,断点续传,CSocket 中图分类号:TP393.09 文献标识码:A ABSTRACT This paper analyses the principle and implement method of multi--thread downloading and broken——point continuingly—- transferring based on HTTP on Internet.The realization of a multi—thread downloading tool is proposed.This downloading tool is designed based on multi—thread technology and CSocket programming,and it adopts the key technology,such as creating and managing multi-thread·allocating size of each thread。etc.It achieves the multi—thread downloading and broken—point continuingly— transferring from Web server tO client. KEYWORDS HTTP,multi—thread downloading,broken—point continuingly—transferring,CSocket 在网络环境下,用多线程技术实现同步下载,可 以提高CPU和带宽的利用率,从而提高下载速度。为 了避免网络不稳定造成的下载中断后的重传,引人断 点续传机制,可提高下载的效率。本文介绍了基于 HTTP协议的多线程下载和断点续传的实现方法,并 给出了一个多线程下载工具的实现过程。 1 HTTP HTTP(超文本传输协议)是应用层协议。上网浏 览网页、从网站下载时,浏览器和Web服务器之问就 会通过HTTP协议在Internet上进行数据的发送和 接收[1]。本下载工具的实现使用的是HTTP 1.1协议。 1.1 HTTP URL 浏览网页或下载资源时,都需要获取一个网址,这 个网址就是HTTP URL。其格式为http://host[: port][-abs path]。其中,http表示通过HTTP协议来 定位网络资源;host表示合法的Internet主机域名或 IP地址;port用于指定一个端13号,若port为空,则使 用默认的端口80;abs path指定请求资源的URI(统 一资源标识符),用于指定构成Web资源的字符串的 各不同部分。 在这个多线程下载工具的设计中,实现从Web服 务器下载资源,要获取下载资源的HTTP URL,通过 解析HTTP URL获取到资源所在的主机域名和端13 号,建立和Web服务器的连接。 1.2 HTTP请求和应答 发送和接收消息是HTTP的核心,HTTP有两类 消息:请求消息和响应消息。客户端通过发送HTTP 请求消息向服务器请求对资源的访问。在接收和解释 请求消息后,服务器会返回一个HTTP响应消息。 例如:向服务器请求某个文件时,只要发送类似如 下的HTTP请求即可: GET/Path/FileName HTTP/1.0 Host:WWW.server.corfl:80 AcceptI*|“X- User—Agent:GeneralDownloadApplicationC Connection: close 如果服务器成功收到该请求,并且没有出现任何 错误,则会返回相应的响应消息。例如: HTTP/1.0 2000K Content—Length:1 3057672 其中,200为状态响应码,表明请求成功;Content— Length表明待下载文件的长度。在这个多线程下载 工具的设计中,向Web服务器发送HTTP请求时,要 构造类似上例的HTTP请求字段,当请求成功返回响 应消息后,再分别为每个下载线程构造HTTP请求字 段,通过CSocket编程向服务器传输HTTP请求,实 现每一个线程的下载。 * 2009—06—25收到,2009—08—19改回 ** 李晶嫒,女,1984年生。硕士研究生,研究方向:计算机网络和数据库安全。 万方数据 第22卷第10期 电脑开发与应用 2多线程下载 多线程是将程序任务分成几个并行的任务,由每 个线程并发执行。当一个应用程序中的线程个数大于 1时,就称为多线程[2]。当创建一个进程时,操作系统 会自动创建这个进程的第一个线程,成为主线程。此 后,主线程可以创建其他线程,进而实现多线程E3]。 多线程下载就是要创建多个下载的线程,每个线 程按分配的下载字节数,下载文件的各个部分。 2.1 多线程下载的原理 多线程下载的前提是网络的连通和通信软件与协 议的应用。从服务器下载文件,是客户端与服务器的交 互过程,采用的文件传输协议有多种,最常见的是 HTTP(超文本传输协议)和FTP(3c件传送协议)。本 软件是基于HTTP实现的。 当向服务器发送HTTP请求成功后,可以进行下 载。采用多线程下载,就是要创建多个下载线程,分别 下载文件的不同部分。在这个多线程下载工具的设计 中,创建了4个线程分别与服务器连接,每个线程传输 文件的一部分。通过多个线程同时与服务器连接,可以 获取到较高的带宽[4]。例如:原来有10个用户都通过 单一线程与服务器相连,服务器的总带宽假设为 56kb/s,则每个用户分到的带宽是5.6kb/s。如果同时 打开4个线程与服务器连接,那么共有13个线程与服 务器连接,每个线程获得的带宽将是(56/13)×4— 17.2kb/s,是原来的三倍多。由此可见,同时打开的线 程越多,所获取的带宽就越大。 2.2实现方法 2.2.1设计思路 多线程下载工具的实现中,首先通过CSocket套 接字编程,向服务器发送构造好的HTTP请求消息。 当HTTP响应成功后,通过创建4个线程实现下载, 并创建一个监听线程用于判断4个下载线程是否完成 下载,当下载完成时将4个下载的临时文件合并生成 原始的下载文件。实现的流程图如图1所示。 2.2.2 利用VC++CSoeket类实现与服务器的通 信 VC++MFC为使用Windows Socket编写网络 程序提供了多种方法,本软件通过CSocket类实现套 接字编程。CSocket是从CAsyncSoeket派生出来的, 可以使用CAsyncSocket类中的成员函数。 从Web服务器下载文件,是客户端和Web服务 器通信的过程。在这个多线程下载工具中通过VC+ +CSoeket类进行套接字编程,发送构造的HTTP消 息请求字段,建立和服务器的通信。当收到服务器的 @ 希丽焉磊爰歪爵两雨泵0时快速 采集 if(roundO)delaytime一5;//当round0时快速 采集 f(round0.5) { jldy();//记录数值 round一3,//若读数有较大波动,快速采集3周 break;//退出for循环 ) } //………一一延时完毕……一…………………. bl=dmm—reading;//将读数传给b1 bl—ok=1;//B1测试完毕 SetCtrlVal(mainpanel,MAINPANEL—B1METER, b1)l//显示 //一一……~断开B1…………~一……一… pi40iv—Disconnect(vi7,”com55“,“n055“k//颤 开B1 pi40iv—Disconnect(vi7,“com56“。”n056“);//颤 开B1地 程序中的jldy()是一个记录模块,当电压波动时, 每路电压参数记录在一个记事本中,包括电源波动时 间和电压数据,以方便用户核对历史数据。 小结:PXI总线仪器已在航天、军事、医疗卫生、 冶金等行业得到了广泛的应用,丰富的软硬件资源使 得用户在NI的Lab Windows/CVI环境下开发各种 高可靠的检测和控制程序,引领测试21世纪测试技术 的发展方向。 [1] [2] [3] 参考文献 徐 洁.电子测量与仪器[M].北京:机械工业出版 社,2004. 武昌俊.自动检测技术及应用[M].北京:机械工业出 版社,2005. 孙晓云,郭立炜,孙会琴.基于Lab windows/CVI的虚 拟仪器设计与应用[M].北京:电子工业出版社,2005. (I-g第51页) 强的实用性,具有一定的推广价值。 4结束语 该超市进销存管理系统对超市的商品实行了信 息化管理,能满足一个中小型超市的日常工作需求,能 实现对超市商品的管理、查询、统计等操作,可达到提 高商品管理效率并指导经营方向的目的。本系统人机 界面友好,安全可靠,并且支持多用户操作(高级用户、 普通用户),可以对用户进行权限设置,本系统具有较 [1] [2] [3] 参考文献 凯际资讯工作室.Access进销存管理数据库开发[M]. 北京:中国青年电子出版社,2005. 刘大玮,王永皎,巩志强.Access数据库项目案例导航 [M].北京:清华大学出版社,2005. 卢智勇,谭小丹,李光明.Vistual Basic.NET数据库 程序设计与实例[M].北京:冶金工业出版社,2005. (上接第54页) 率,为用户提供更快速的下载。本文阐述了多线程下载 及断点续传技术,并给出了用VC++编写的多线程 下载工具的实现过程和关键技术。经测试,在服务器支 持断点续传的情况下,文件断点下载成功;使用四个线 程下载文件比使用单线程下载时速度有一定改善,并 且随着下载线程的增多,下载速度的提高更为明显。 参考文献 [1] 孙鑫.Java Web开发详解[M].北京:电子工业出版 [2] [3] [4] [53 社,2008. 李顺新,丁胜,陈建勋.数据备份系统中多线程传输 和断点续传的设计[J].微机发展,2004,14(10):111— 113. 孙 鑫,余安萍.VC++深入详解[M].北京:电子工 业出版社,2007. 毛光喜.多线程下载工具的开发与应用[J].计算机应 用与软件,2006,23(7):136—138. 廖乐林.断点续传的原理探讨和编程应用[J].计算机 与信息技术,2007,23:352. 万方数据
展开阅读全文
  皮皮文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
0条评论

还可以输入200字符

暂无评论,赶快抢占沙发吧。

关于本文
本文标题:基于http协议的多线程下载工具的实现.pdf
链接地址:http://www.ppdoc.com/p-10914360.html
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服客服 - 联系我们

copyright@ 2008-2018 皮皮文库网站版权所有
经营许可证编号:京ICP备12026657号-3 

收起
展开