原创基于bt协议的libtorrent研究与应用开发分析

原创基于bt协议的libtorrent研究与应用开发分析

ID:36964688

大小:30.00 KB

页数:3页

时间:2019-05-16

原创基于bt协议的libtorrent研究与应用开发分析_第1页
原创基于bt协议的libtorrent研究与应用开发分析_第2页
原创基于bt协议的libtorrent研究与应用开发分析_第3页
资源描述:

《原创基于bt协议的libtorrent研究与应用开发分析》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、摘要:首先介绍了BT元信息文件及BT库libtorrent的数据交互过程,然后对libtorrent的部分重要数据结构进行了分析与说明,提出了业务插件扩展的使用方法。中国论文网  关键词:BT协议;libtorrent应用;BT插件  中图分类号:TP393文献标识码:A文章编号:1009-3044(2012)07-1526-03  AnalysisofLibtorrent’sApplicationBasedonBTProtocol  YANGQing,ZHOUDong-mei,WANGYi-fei  (CollegeofSciencean

2、dTechnology,ChengduUniversityofTechnology,Chengdu610059,China)  Abstract:Firstly,introducedthebtelementinformationfileandbt-libtorrent’sinteractiveprocess.Secondly,analyzedsomeimportantdatastructureoflibtorrent.Lastly,putforwardthemethodofusingplug-inextensionofbusiness.  

3、Keywords:BTprotocol;libtorrentApp;BTplug-in  在现今网络通信中,BT作为p2p技术的一种已得到广泛应用。在开源的BT协议库中,LibTorrent是C++语言BitTorrent开发库,旨在提供高性能和良好代码风格的BT开发包。该开发包与其他包不同的是,它直接通过网络堆栈抓取文件页,其性能是官方客户端的数倍,尤其在基于服务器的bt服务器端开发中颇为重要。  1BT元信息文件  元信息文件(MetainfoFileStructure)又称为种子文件(.torrent),其结构元信息文件里面的所有数据

4、都是一个以B编码的dictionary,包含下面列出的重要的键(key):  1)info键对应的值为一字典(dictonary),描述要发布的文件信息,分单文件模式和多文件模式,其中共有键piecelength的键值为每片(piece)的字节数(通常情况下2的n次方),共有键pieces的键值是所有片(piece)哈希值字符串,如piece0:hash0piece1:hash1。  2)announce的键值为tracher服务器的URL地址。  2libtorrent数据交互  在peer的交互中,客户端首先向Tracker请求下载,同

5、时包括本地资源的发布,服务器端Tracker响应则包含客户端请求的资源列表。  2.1Peer客户端的TRACKER请求报文(announce)  TRACKER请求报文(announce)的重要参数主要有:表示为元信息文件中的info键值(20字节哈希值)、表示为客户端唯一ID的Peer_id、监听端口、客户端uploaded情况、客户端download情况和客户端IP地址。  2.2Tracker响应报文(text/plain)  响应文本由B编码的字典(dictionary)组成,其中failurereason的键值表示可读的错误信息

6、。Complete为完成整个文件下载的peer数以及peers键值为一个字典列表(peer的id、ip、port)。  2.3Peer与Peer的交互过程  Peer与Peer的交互需要经过握手,piece信息的发布以及piece的请求等过程,如图1所示。  值得注意的是on_bitfield必须在handshake后立即发送,如peer无任何已下载了的piece也可以不发送bitfield。但在peer间通讯的其他时候不再允许发送此消息。  3Libtorrent库解析  libtorrent库的接口由少量几个类组成。最主要的类有sess

7、ion、entry、torrent_info、torrent_handle、alert、extensions。其内部工作流程为如图2所示。冒险岛私服www.yourmyhe.comoiu    图1Peer与Peer的交互过程示意图    图2libtorrent内部工作流程  3.1重要的数据结构  3.1.1entry类  在编码体系结构中,代表一个节点时可使用entry类。它可以是某个变量类型:链表(list)、字典(dictionary)、整数(integer)或者字符串(string等其中成员函数integer()、string(

8、)、list()、dict()函数是返回相应类型的生产者。find_key()将在字典里查找指定关键字的元素,如从torrent信息文件中获得信息的常用代码:  dictiona

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。