BT源代码学习心得(一):总体描述

发信人: wolfenstein (NeverSayNever), 个人文集
标  题: BT源代码学习心得(一):总体描述
发信站: 水木社区 (Fri Jul 29 21:24:18 2005), 文集
(本文包含HTML标记,终端模式下可能无法正确浏览)
    BT的源代码是使用python写的,这是一种动态类型的语言,所有的对象不需要定义其类
型,任何对象可以作为参数传入某个函数中,唯一的要求是当调用该对象的某个方法时,它
必须存在。另外这种语言提供了大量的模块,这些模块中很多都能在不同的平台实现其功能
,大大得方便了编写跨平台程序。
    在BT的代码中,主要功能都有命令行模式和图形界面模式两种执行方式,但最后它们执
行的核心功能的代码都是相同的,区别在于执行这些核心功能时,传递给它们的参数是从命
令行和配置文件处获取还是从图形界面中获取。
    在我开始学习时,看的是4.0.3版本的代码。主要有两个主要的执行模块
btdownloadgui和btmaketorrentgui,前者是客户端,后者是制造种子文件的工具(从4.0.0
版本开始,btmaketorrentgui代替了btcompletedir)。另外,还有个tracker模块也很重要
。学习的时候如果喜欢直接切入正题,就可以不看和gui相关的部分,直接看实现核心功能
的模块。
    提一下图形界面,BT的图形界面模块用的是gtk,它的详细资料可以在这里找到:
 [ http://www.pygtk.org/ ] http://www.pygtk.org/
    使用gtk编写图形界面的好处是它的跨平台性很好,可以在不同的操作系统上生成风格
相近的图形界面。另外在BT中貌似还用了另一个图形界面模块库(btdownloadcurses),我大
概看了一下说明,好像这个curses只能用于某些平台,想了下我主要的学习目的是BT,于是
在GUI方面就集中精力攻gtk了,这个curses库就没有去看它。
我学习BT的过程大概如下:
    看python语言教程熟悉python语言。
    试着看btdownloadgui,发现看着头很大,另外发现很多模块在python网站上的模块参
考手册上没有。遂发现了gtk的网站,熟悉了一下使用gtk编写GUI程序的基本方法后,继续
试图看btdownloadgui的图形部分,有些明白,但是还是感觉到有些吃力。
    开始尝试转移一下目标,先看btmaketorrentgui,研究一下种子文件是怎么生成的,如
果心里对种子文件的结构有了解再研究下载部分的代码应该能轻松些。这部分比较成功得完
成了,学习到了BT的种子文件的结构,还对gtk的GUI程序编写也比较熟悉了。
    接下来看的是tracker部分的代码,看的时候基本上都看完了,知道了一个tracker是如
何得与客户端通信。但是对于一些具体的数据结构可能还会存在一些模糊的地方。
    最后回过头来看btdownloadgui的代码,发现终于可以顺利得看下去了。然后将所有看
到的结果总结起来,学习到了BT的通信协议。
    今后的部分将把以上说的学习过程具体展开。

BT源代码学习心得(一):总体描述相关推荐

  1. BT源代码学习心得(一):总体描述 -- 转贴自wolfenstein (NeverSayNever)

    BT源代码学习心得(一):总体描述 发信人: wolfenstein (NeverSayNever), 个人文集 标  题: BT源代码学习心得(一):总体描述 发信站: 水木社区 (Fri Jul ...

  2. BT源代码学习心得(四):种子文件的生成 -- 转贴自wolfenstein (NeverSayNever)

    BT源代码学习心得(四):种子文件的生成 author: wolfenstein 在知道种子文件采取的编码方式后,我们现在可以来看一个种子文件具体是如何生成的了.在BT中,生成种子文件的可执行模块是 ...

  3. BT源代码学习心得(五):统一网络服务接口--RawServer -- 转贴自 wolfenstein (NeverSayNever)

    BT源代码学习心得(五):统一网络服务接口--RawServer author:wolfenstein 以后的部分都需要网络服务(种子文件的生成在本地就可以完成,但是通过这些种子文件下载实际的内容和提 ...

  4. BT源代码学习心得(四):种子文件的生成

    BT源代码学习心得(四):种子文件的生成 发信人: wolfenstein (NeverSayNever), 个人文集 标  题: BT源代码学习心得(四):种子文件的生成 发信站: 水木社区 (We ...

  5. BT源代码学习心得(十):客户端源代码分析(相关对象一览) -- 转贴自 wolfenstein (NeverSayNever)

    BT源代码学习心得(十):客户端源代码分析(相关对象一览) Author:wolfenstein(NeverSayNever), BitTorrent/download.py中的Multitorren ...

  6. BT源代码学习心得(七):跟踪服务器(Tracker)的代码分析(HTTP协议处理对象) -- 转贴自 wolfenstein (NeverSayNever)

    BT源代码学习心得(七):跟踪服务器(Tracker)的代码分析(HTTP协议处理对象) author: wolfenstein (NeverSayNever) 上次我们分析了Tracker类初始化的 ...

  7. BT源代码学习心得(二):程序运行参数的获取 -- 转贴自 wolfenstein (NeverSayNever)

    BT源代码学习心得(二):程序运行参数的获取 发信人: wolfenstein (NeverSayNever), 个人文集 标  题: BT源代码学习心得(二):程序运行参数的获取 发信站: 水木社区 ...

  8. BT源代码学习心得(三):种子文件的编码方式 -- 转贴自wolfenstein (NeverSayNever)

    BT源代码学习心得(三):种子文件的编码方式 author: wolfenstein BT的作者使用了一种比较简单易懂的编码方式来对设计种子文件.这种编码方式能够很简单得对python中的各种数据类型 ...

  9. BT源代码学习心得(九):客户端源代码分析(图形界面浅析) -- 转贴自 wolfenstein (NeverSayNever)

    BT源代码学习心得(九):客户端源代码分析(图形界面浅析)  author:wolfenstein 客户端将从btdownloadgui.py开始进行分析,这样可以顺便把Python中的GUI编程也看 ...

最新文章

  1. 揭秘:深度网络背后的数学奥秘
  2. 4dda在linux中的意思,Evvail | MaxQuant-蛋白质组DDA数据分析金标准 | Omics - Hunter
  3. wxWidgets:实现框架构造器
  4. 小波阈值去噪法基础理论
  5. linux操作系统信号捕捉函数之回调函数小结
  6. leetcode733. 图像渲染(bfs)
  7. cubemx lan8720a ping不通_行刑的刀越用越钝,为啥刽子手却从不去磨?原因让外国人想不通!...
  8. 【报告分享】2020美妆行业短视频营销报告.pdf(附下载链接)
  9. 《我的WCF之旅》博文系列汇总
  10. 删除mysql数据库_安装/删除MySQL数据库
  11. 编译原理第一章笔记--绪论
  12. jdk中运行java程序的工具,采用JDK工具编译运行java程序
  13. 仿站工具箱http://fztool.ptcms.com/
  14. verilog语法进阶
  15. CGB2202面向对象第10天
  16. window7系统搭建FTP服务端,使用FileZilla FTP客户端测试
  17. 脚本小子_python基础
  18. 海南楼市充斥着传说 投机者必将自食其果
  19. JavaScript ( 预解析 )
  20. python六芒星怎么画_Python Turtle绘画初学编程——六芒星,浪形圈

热门文章

  1. pandas安装步骤
  2. Android 上传Google Play 市场打包成AAB文件
  3. HTML--特殊符号
  4. SolidWorks安装后别着急用,这八个重要SolidWorks设置可以提高你的画图效率
  5. Linux 下安装bcompare
  6. Tcl学习1——安装软件环境ActiveTcl
  7. Bonobo Git Server搭建本地Git服务器(Windows 下)
  8. 笔记本关不了机怎么办
  9. html判断360浏览,JS判断是否是360安全浏览器的极速内核方法
  10. 关于linux的一些常用命令