优秀的毕业设计论文网
计算机 JAVA 电子信息 单片机 机械机电 模具 土木工程 建筑结构 论文
热门搜索词:网络 ASP.NET 汽车 电气 数控 PLC

BT下载软件的设计与实现

以下是资料介绍,如需要完整的请充值下载.
1.无需注册登录,支付后按照提示操作即可获取该资料.
2.资料以网页介绍的为准,下载后不会有水印.资料仅供学习参考之用.
  
资料介绍:
1.1研究背景 BitTorrent(简称BT,俗称BT下载)是一个多点下载的源码公开的P2P软件,使用非常方便,就像一个浏览器插件,很适合新发布的热门下载。其特点简单的说就是:下载的人越多,速度越快。 BitTorrent 下载工具软件可以说是一个最新概念 P2P 的下载工具、它采用了多点对多点的原理。该软件相当的特殊,一般我们下载档案或软件,大都由 HTTP 站点或FTP 站台下载,若同时间下载人数多时,基于该服务器频宽的因素,速度会减慢许多,而该软件却不同,恰巧相反,同时间下载的人数越多你下载的速度便越快,因为它采用了多点对多点的传输原理。??? 互联网上P2P业务近年来发展迅速,已经成为宽带互联网业务的主流。P2P技术将各个用户互相结合成一个网络,共享其中的带宽,共同处理其中的信息。与传统的客户机——服务器模式不同,P2P工作方式中,每一个客户终端既是客户机又是服务器。以共享下载文件为例,下载同一个文件的众多用户中的每一个用户终端只需要下载文件的一个片段,然后互相交换,最终每个用户都能得到完整的文件。 FTP客户端软件断点续传指的是在下载或上传时,将下载或上传任务(一个文件或一个压缩包)人为的划分为几个部分,每一个部分采用一个线程进行上传或下载,如果碰到网络故障,可以从已经上传或下载的部分开始继续上传下载以后未上传下载的部分,而没有必要重头开始上传下载。用途可以节省时间,提高速度。 一个采用了多线程技术的应用程序可以更好地利用系统资源。其主要优势在于充分利用了CPU的空闲时间片,可以用尽可能少的时间来对用户的要求做出响应,使得进程的整体运行效率得到较大提高,同时增强了应用程序的灵活性。更为重要的是,由于同一进程的所有线程是共享同一内存,所以不需要特殊的数据传送机制,不需要建立共享存储区或共享文件,从而使得不同任务之间的协调操作与运行、数据的交互、资源的分配等问题更加易于解决。 Windows Sockets 是从 Berkeley Sockets 扩展而来的,其在继承Berkeley Sockets 的基础上,又进行了新的扩充。这些扩充主要是提供了一些异步函数,并增加了符合WINDOWS消息驱动特性的网络事件异步选择机制。Windows Sockets由两部分组成:开发组件和运行组件。开发组件:Windows Sockets 实现文档、应用程序接口(API)引入库和一些头文件。运行组件:Windows Sockets 应用程序接口的动态链接库(WINSOCK.DLL)。 1.2研究的目的及意义 虽然现在网络上最流行的BT下载软件并不是BitTorrent,但是作为最成功的P2P应用软件和整个BT下载的创始者和开拓者,BitTorrent在BT技术中地位是不容忽视的。 首先,BitTorrent的源代码是公开的,它很好的体现了BT协议的思想和精髓,更准确的反应了BT下载的机制,现在流行的各种BT下载软件大都是在BitTorrent的基础上衍生而来的,并且都没有改变软件在下载和共享上的工作原理,因此分 析和研究BitTorrent的实现,这将有助于开发特定的PZP系统。 其次,BitTorrent网络中的Tracker服务器采用Tracker算法,根据下载节点的请求返回一定数量的邻居节点,然后下载节点与这些邻居节点建立连接进行文件传输,在文件传输的过程中,各个节点采用片段选择算法来选择要下载的片段,可见Traeker算法和片段选择算法在整个过程中的重要作用,因此本文选择这两个算法进行了重点研究。 最后,BitTorrent作为开源的软件,大多数文献对其相关算法及性能的研究都是通过真实环境或模拟环境进行的测试研究。因此分析BitTorrent的主要代码并从理论上去分析和研究其相关核心算法,不仅可以对现有BT网络提供更多的理论支持,而且对指导我们如何去改进现有网络具有很大的现实意义。 多线程下载实现 对于BT客户端来说,每个客户端都是服务器,服务器也是客户端,接下来站在两个不同角度来说明实现过程。 1.服务器端:一般需要启动两个线程,一个监听线程负责监听客户端的请求(负责接入客户),这里面需要一个listen函数,并在一个循环里调用accept函数,一旦发现有客户端请求接入,可以接着启动另一个线程与客户端进行交互.在与客户交互的线程中,首先使用read函数读客户端闯过来的内容,们要定义一个简单的协议,也就是定义一个服务器端与客户端听得懂的语言.而为了把问题简化,让服务器只要听懂两句话,一就是客户说“我要读文件信息”,二就是“我准备好了,可以传文件了”。 至此,服务器端程序可以根据客户端不同的请求进行不同的操作,比如客户端请求类型为: (1)服务器端只需发送文件的相应属性信息给客户(send函数),如请求类型为; (2)服务器端则读文件内容,并把文件内容发送给客户。 ? ???当然,做这些工作之前,需要对socket版本配置,以及端口的绑定等等。 2.客户端:客户端主要用来发起请求并进行相应的交互操作.这里,由于涉及的是文件下载的程序,首先客户端发一个文件信息的请求,如果服务器端传回此文件的信息(即存在),那么客户段应该接着发送请求下载命令,由于有些文件太大,又需要多线程下载,可以启动n个线程,为了使这n个线程不至于作重复的工作,必须首先根据服务器端传过来的文件信息(文件大小)对文件进行分块,每个线程只下载一块。