- 1、本文档共81页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ctorrent程序源码分析
CTorrent程序源码分析姚旭晨目录CTorrent程序源码分析 11. 前言 31.1为什么要写这份文档 31.2客户端的选择 31.3CTorrent简介 42.准备工作 52.1知识储备 52.2我对本篇源码分析的说明 53.总述 63.1CTorrent的命令行参数的意义 63.2CTorrent的状态栏的意义 63.3各个类实现的具体实例 73.4BT协议的特性和CTorrent的实现情况 84.源代码分析 104.1ctorrent.cpp 104.2downloader.cpp 114.3bencode.h 134.4bitfield.h 154.4.1classBitField 154.5btcontent.h 184.5.1BTCACHE结构体 184.5.2classbtContent 184.6btfiles.h 304.6.1StructBTFILE 304.6.2ClassbtFiles 314.7btrequest.h 354.7.1classRequestQueue 354.7.2classPendingQueue 374.8btstream.h 384.8.1classbtStream 384.9bufio.h 404.9.1classBufIo 404.10connect_nonb.h 424.11httpencode.h 424.12iplist.h 444.12.1struct_iplist 444.12.2classIpList 444.13peer.h 454.13.1宏 454.13.2struct_btstatus 464.13.3classbtBasic 464.13.4classbtPeer:publicbtBasic 474.14peerlist.h 564.14.1struct_peernode 564.14.2classPeerList 574.15rate.h 704.15.1变量 704.15.2函数 714.16setnonblock.h 714.17sigint.h 714.18tracker.h 724.18.1宏 724.18.2变量 724.18.3函数 745.后记 795.1开源和BitTorrent,不得不说的话 795.2BT的精神:共享,公平和宽容 795.3本篇文档的版权和莫做害群之马 795.4我的敬意 805.5结语 80图表目录图表1main()函数流程图 10图表2Downloader()函数流程图 12图表3btFiles::_btf_recurses_directory()函数流程图 33图表4btPeer::RequestPiece()函数流程图 52图表5btPeer::Send_ShakeInfo()函数流程图 55图表6PeerList::UnChokeCheck()函数流程图 61图表7算法1流程图 62图表8算法3流程图 63图表9PeerList::FillFDSET()函数流程图 66图表10PeerList::AnyPeerReady()函数流程图 68图表11btTracker::SendRequest()函数流程图 77表格目录表格1BitField::Except()函数逻辑表 16表格2m_shake_buffer[68]位填充情况 191. 前言1.1为什么要写这份文档BitTorrent点对点文件传输协议(以下简称BT协议)及其客户端应用大行其道的今天,各种各样的客户端不胜枚举(可以参看/BitTorrentApplications),而各种各样的BT技术论坛讨论的却都是有关客户端软件如何使用的问题,有关底层协议细节和实现方案的讨论少之又少。我碰巧有机会研究过一阵BT协议的原理,也看过一部分源代码(CTorrent),虽然现在不再继续BT方面的研究了,但有感于当初看代码时遇到的资料的匮乏的窘境,便决心把自己的理解和心得写出来,算是自己的一份总结(这也是我的本科毕业论文),也希望帮助对BT协议实现有兴趣的人尽快上手,少走弯路。有关BT协议的论述主要有三篇文章:1,BT官方网站上的协议解释:/protocol.html。2,BittorrentProtocolSpecification,/BitTorrentSpecification。3,IncentivesBuildRobustnessinBitTorrent,/bittorrentecon.pdf。这三篇文章从不同方面给出了BT协议从算法到实现的一个较为简略的描述。为了更深入地理解BT协议,自己动手写一个BT客户端或阅读一个BT客户端的源代码的工作是必不可少的。1.2客户端的选择BramCohen是BT协议的创建者。根据这份协议,他写了BT的第一个客户
文档评论(0)