基于BT协议libtorrent研究与应用开发分析.docVIP

基于BT协议libtorrent研究与应用开发分析.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文档。上传文档
查看更多
基于BT协议libtorrent研究与应用开发分析

基于BT协议libtorrent研究与应用开发分析   摘要:首先介绍了BT元信息文件及BT库libtorrent的数据交互过程,然后对libtorrent的部分重要数据结构进行了分析与说明,提出了业务插件扩展的使用方法。   关键词:BT协议;libtorrent应用;BT插件   中图分类号:TP393文献标识码:A文章编号:1009-3044(2012)07-1526-03   Analysis of Libtorrent ’s Application Based on BT Protocol   YANG Qing, ZHOU Dong- mei ,WANG Yi-fei   (College of Science and Technology, Chengdu University of Technology, Chengdu 610059, China)   Abstract: Firstly,introduced the bt element information file and bt-libtorrent’s interactive process.Secondly,analyzed some important data structure of libtorrent. Lastly,put forward the method of using plug-in extension of business.   Key words: BT protocol; libtorrent App; BT plug-in   在现今网络通信中,BT作为p2p技术的一种已得到广泛应用。在开源的BT协议库中,LibTorrent是C++语言BitTorrent开发库,旨在提供高性能和良好代码风格的BT开发包。该开发包与其他包不同的是,它直接通过网络堆栈抓取文件页,其性能是官方客户端的数倍,尤其在基于服务器的bt服务器端开发中颇为重要。   1 BT元信息文件   元信息文件(Metainfo File Structure)又称为种子文件(.torrent),其结构元信息文件里面的所有数据都是一个以B编码的dictionary,包含下面列出的重要的键(key):   1) info键对应的值为一字典(dictonary),描述要发布的文件信息,分单文件模式和多文件模式,其中共有键piece length的键值为每片(piece)的字节数(通常情况下2的n次方),共有键pieces的键值是所有片(piece)哈希值字符串,如piece0:hash0 piece1:hash1。   2) announce的键值为tracher服务器的URL地址。   2 libtorrent数据交互   在peer的交互中,客户端首先向Tracker请求下载,同时包括本地资源的发布,服务器端Tracker响应则包含客户端请求的资源列表。   2.1 Peer客户端的TRACKER请求报文(announce)   TRACKER请求报文(announce)的重要参数主要有:表示为元信息文件中的info键值(20字节哈希值)、表示为客户端唯一ID的Peer_id、监听端口、客户端uploaded情况、客户端download情况和客户端IP地址。   2.2 Tracker响应报文(text/plain)   响应文本由B编码的字典(dictionary)组成,其中failure reason的键值表示可读的错误信息。Complete为完成整个文件下载的peer数以及peers键值为一个字典列表(peer的id、ip、port)。   2.3 Peer与Peer的交互过程   Peer与Peer的交互需要经过握手,piece信息的发布以及piece的请求等过程,如图1所示。   值得注意的是on_bitfield必须在handshake后立即发送,如peer无任何已下载了的piece也可以不发送bitfield。但在peer间通讯的其他时候不再允许发送此消息。   3 Libtorrent库解析   libtorrent库的接口由少量几个类组成。最主要的类有session、entry、torrent_info、torrent_handle、alert、extensions。其内部工作流程为如图2所示。      图1 Peer与Peer的交互过程示意图      图2 libtorrent内部工作流程   3.1重要的数据结构   3.1.1 entry类   在编码体系结构中,代表一个节点时可使用entry类。它可以是某个变量类型:链表(list)、字典(dictionary)、整

文档评论(0)

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

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

1亿VIP精品文档

相关文档