基于BT协议的下载程序开发

来源 :电脑知识与技术 | 被引量 : 0次 | 上传用户:wanghui3321
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:本文分析了BitTorrent协议规范,根据torrent文件格式和Bencoding编码规则,在C#.Net2005环境下实现了对torrent文件的解析。根据分析结果,给出了一种下载程序的实现。
  关键词:下载程序;BitTorrent协议;torrent;B-encoding
  中图分类号:TP312文献标识码:A文章编号:1009-3044(2007)12-21661-02
  
  Development of Downloading Procedure Based on BT Protocol
  
  ZHOU Ke1, ZHANG Yan-na2
  (1.Henan University College of Computer and Information Engineering,Kaifeng 475001,China;2.Henan UniversityHenan University, Department of Facility and Laboratory Mangement,Kaifeng 475001,China)
  Abstract:This paper analyses the BitTorrent protocol in details and sums up its characteristics. Then, in the basis of torrent file format and Bencoding encoded mode,The torrent file had been successfully analysed precisely. According the analysis, one method of developing the downloading procedure was described.
  Key words:Downloading Procedure;BitTorrent protocol; torrent; Bencoding
  
  1 引言
  
  传统的网络服务模式,所有的下载开销都在服务器上,由于服务器性能和带宽的限制, 服务器往往要限定用户的数量和访问速率;而使用基于BT协议的共享软件,可以把下载的开销分摊到每个下载者那里,在理论上支持无限多个下载者下载同一个文件,充分提高文件共享效率。本文简要分析了BT协议的工作原理,并给出了一种采用C#的下载程序的分析部分的实现,基于这种分析程序,借助C#中TCP协议的助手类就可以快速的开发出实用的下载程序。
  
  2 BT协议的工作原理
  
  BT协议将这种文件共享模式分为Tracker服务器和Client两部分。Tracker服务器的任务是搜集Client的信息,并帮助BT Client相互发现对方,进而能互相下载所需的资源。每一个Client即一个Peer 在下载开始以及下载过程中,要不断地与Tracker服务器进行通信,报告自己的信息并获取其它Peer的信息。Tracker對所有下载者的信息进行维护,当它收到一个请求后,先把发出请求的Peer的信息记录下来,然后将其他参与下载同一个文件的下载者的信息返回给该Peer。Peer在收到Tracker的响应后,与其它下载者建立连接下载本地所没有的文件资源。为了使别的客户端也可以从本地获取文件资源,该客户端还要监听某个端口,用于接收其它Peers的连接请求。
  
  3 torrent文件及其分析程序的实现
  
  BT协议的主要特征,集中体现torrent文件中。下面就torrent文件的内容及格式先做介绍,最后给出用C#语言实现该类文件解析的方法。
  3.1 torrent文件及其编码
  BT客户端开始下载资源时首先需要寻找torrent文件, torrent文件包含了完整的资源下载信息:包括资源名、大小、资源的创建者,创建时间,指向Tracker的url列表等信息。
  torrent文件采用B-encoding编码来保存数据。B-encoding编码提供四种类型的数据表示:strings(字符串)、integers(整数)、lists(列表)、dictionaries(字典) 。编码规则如下:
  (1)strings的编码规则为:<字符串长度>:<字符串>
  字符串长度单位为字节,没有开始或结束标记。
  (2)integers的编码规则为:i<整数>e
  开始标记为i,结束标记为e。没有大小限制,0不能出现在负的或者是整数的最高位。
  (3)lists的编码规则为:le
  开始标记为l,结束标记为e,列表里可以包含任何B-encoding编码类型,包括字符串、整数、列表、字典。
  (4)dictionaries的编码规则为:de
  开始标记为d,结束标记为e,关键字必须为B-encoding字符串,值可以为任何B-encoding编码类型,包括字符串、整数、列表、字典。
  torrent 文件格式是由若干字段确定的,torrent 文件中关键字段如表1所示:
  
  表1 torrent 文件中关键字段
  info字段用于确定资源是由单文件还是多文件构成的,info后面的第一个字符串为length 或files,二者只能出现一个。length表明是单文件结构,files表明是多文件结构,其详细区别如表2所示:
  
  表2 info字段的内容
  3.2 torrent 文件分析程序的实现
  B-encoding的编码规则只有前述的四种类型的数据,列表和字典中允许包含这四种数据类型,整个文件本身就是字典。在实现的这种文件的分析时采用如下的分析方法,算法流程如图1所示:
  (1)字符串分析。调用四个函数来判断字符串是否为B-encoding编码的四种数据类型:字符串分析函数readstring、整数分析函数readint、列表分析函数 readlist和字典分析函数 readdict。
  (2)分析结果存放。定义一个基类和四个由该基类派生的子类,四个子类分别对应于四种数据类型。字符串和整数数据分别定义CBEncodeString 和CBEncodeInt类的对象存放结果;列表类型的数据使用C#中的List<>泛型类定义一个列表:
  public List m_listObj= new List()暂存分析列表的结果,m_listObj的数据类型定义成基类以便同时存放四个子类的分析结果;字典分析结果的存放用SortedList<>泛型类定义一个字典类型:
  public SortedList m_mapObj = new SortedList()暂存分析字典的结果;同时,在字典类中,还需要定义一个列表类型m_listObj,因为torrent文件在字典结构中包含有列表,这样的结构有利于数据的读取。而字典类型中的值定义为基类型,以便于兼容四种数据类型,类似的列表也需要定义为基类。
  由于分析的结果有多种,而且结构不同,使用list<>泛型类定义一个基类型的列表类型m_listObj按序返回分析结果,torrent文件本身就是一个字典,所以保存返回值的列表只有索引值为0的一项,该项存储的内容是已经分析好的整个文件,结构为一个字典。还要需将最终分析结果由列表m_listObj[0])中的内容强制转换成字典CBEncodeDict类型,而字典中又有Bencoding编码中的四种数据类型深层嵌套,分析整个文件的结构,要把所有的格式都考虑到,在输出结果的过程中根据具体情况要进行不同类型和不同次数的强制转换。
  
  4 结论
  
  本文对BT工作原理进行了分析,根据B-encoding编码规则和torrent文件的格式,在C#.NET 2005环境下开发出了对torrent 文件进行解析的Windows应用程序。借助于此程序,将分析结果提供给下载程序就可以开发出BT下载软件。当然,在使用BT软件进行文件共享带来方便的同时,对磁盘的频繁操作可能会引起磁盘老化,占用过多带宽,这些问题都需要在开发有关基于BitTorrent协议的共享软件时给予足够的重视。以较小的代价获得较好的网络文件共享功能。
  
  图1 算法流程
  
  参考文献:
  [1]Cohen B.Incentives BuildRobustness in BitTorrent[Z/OL].http://www.bittorrent.com.
  [2]王珏,BitTorrent下载技术研究.科技广场,2005(2).
  [3]孔彬,徐良贤,BitTorrent原理分析及改进.计算机工程2004.30(12).
  [4]Simon Robinson.等.著.李敏波.等.译.C#高级编程(第3版),清华大学出版社,2005年7月.
  “本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。”
其他文献
摘要:vsftpd是Linux操作系统下最常用的FTP服务器配置软件,可以通过对vsftpd.conf配置文件的修改来配置FTP服务,主要针对应用广泛的匿名FTP服务器的配置。通过本文对匿名FTP服务器配置的详细叙述,读者可以简单、快捷地在Linux操作系统上配置基于匿名用户的FTP服务器。  关键词:vsftpd;Linux;FTP服务;匿名用户  中图分类号:TP393文献标识码:A文章编号:
期刊
摘要:这篇文章针对UML建模工具的功能,从用户的角度提出了一种评价的方法。这种方法包括了对工具七个方面的功能进行测评,并且应用这一方法对当前最热门的两款工具Model Maker和Rational Rose进行了测评,通过测评最后得出了每种工具的优缺点及它们的适用场合。  关键词:功能评价;CASE工具;model maker;rational rose  中图分类号:TP311文献标识码:A文章
期刊
摘要:随着医疗体制改革,随着医院办公工作人员对计算机使用的日益普及,以及医院现代化管理的要求,需要提高我们医院办公的整体工作效率。利用网络通讯基础及先进的计算机技术,建设一套安全、可靠、开放、高效的信息网络和办公自动化、信息管理电子化系统,可以为医院的行政管理部门提供现代化的日常办公条件及丰富的综合信息服务,实现日常的办公事务处理自动化,以提高办公效率和管理水平,实现医院行政各部门日常业务工作的规
期刊
摘要:网络仿真是一种利用数学建模和统计分析的方法模拟网络行为,从而获取特定的网络特性参数的技术。网络仿真作以其独有的方法为网络规划设计提供客观、可靠的定量依据, 从而缩短网络建设周期,提高网络建设中决策的科学性,降低网络建设的投资风险。本文介绍了一种强有力的网络仿真工具-OPNET,分析了其主要特点、三层建模机制以及仿真方法和步骤,最后通过一个实例来讨论了OPNET技术在具体网络规划和设计中的应用
期刊
摘要:本文主要从大型数据库ORACLE环境四个不同级别的调整分析入手,分析ORACLE的系统结构和工作机理,从九个不同方面较全面地总结了ORACLE数据库的优化调整方案。   关键词:ORACLE数据库;环境调整;优化设计;方案   中图分类号:TP311文献标识码:A文章编号:1009-3044(2007)12-21518-02      Large Oracle Database Design
期刊
摘要:以VRML为代表的WWW下的虚拟现实建模技术正在日益受到广泛的重视,基于VRML进行三维仿真建模具有交互、三维全景、多感知等特点。本文以“汽车”为研究对象,讨论、阐述了VRML构造三维模型的实现方法,并给出了建模效果验证。  关键词:VRML;车模;三维造型;节点  中图分类号:TP391文献标识码:A文章编号:1009-3044(2007)12-21594-02    Approach o
期刊
摘要:计算机网络中传输的信息涉及政府、军事、经济、文教等诸多领域,其中很多是敏感信息甚至是国家机密,所以难免会吸引夹自世界各地的“黑客”及各种病毒的攻击。这除了计算机网络固有的设计缺陷外,很多是因为计算机语言本身的安全漏洞或用户的不正当使用造成的。为此,本文首先讨论了登录口令的设置和处理,接着阐述了网络数据加密解密,最后分析了代理(Agent) 的实现。因此本文具有深刻的理论意义和广泛的实际应用。
期刊
摘要:基于VHDL的电路系统设计具有设计技术齐全、方法灵活、支持广泛等优点。通过数据选择器的设计实例详细介绍了用VHDL设计电路系统的流程和方法,仿真结果表明满足设计要求,降低了设计难度,提高了工作效率。  关键词:VHDL;电路系统;数据选择器  中图分类号:TN79文献标识码:A文章编号:1009-3044(2007)12-21658-01    The Design of Circuit S
期刊
摘要:IPv6提供了对于移动性的支持,移动通信中的实时应用如IP电话、视频会议等对于服务质量提出了要求。介绍了移动IPv6 的基本原理与RSVP的工作特点,讨论了RSVP在移动环境中应用出现的问题,分析了几种解决方案的优点和不足。  关键词:移动IP;服务质量;资源预留协议  中图分类号:TP393文献标识码:A文章编号:1009-3044(2007)12-21554-02    The Qos
期刊
摘要:阐述了层次分析法的基本思想、方法和步骤,给出AHP的特征根计算方法,编写了C语言算法,并且算法通过了数据测试。  关键词:层次分析法;判断矩阵;一致性校验;C算法  中图分类号:TP312文献标识码:A文章编号:1009-3044(2007)12-21654-02    The C Algorithm on Consistent Rule Of Judgment Matrix in AHP 
期刊