BT源代码学习心得(一):总体描述 -- 转贴自wolfenstein (NeverSayNever)
来源:互联网 发布:zookeeper和nginx 编辑:程序博客网 时间:2024/05/18 12:38
BT源代码学习心得(一):总体描述
发信人: wolfenstein (NeverSayNever), 个人文集
标 题: BT源代码学习心得(一):总体描述
发信站: 水木社区 (Fri Jul 29 21:24:18 2005), 文集
标 题: 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写的,这是一种动态类型的语言,所有的对象不需要定义其类
型,任何对象可以作为参数传入某个函数中,唯一的要求是当调用该对象的某个方法时,它
必须存在。另外这种语言提供了大量的模块,这些模块中很多都能在不同的平台实现其功能
,大大得方便了编写跨平台程序。
在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的通信协议。
今后的部分将把以上说的学习过程具体展开。
看python语言教程熟悉python语言。
试着看btdownloadgui,发现看着头很大,另外发现很多模块在python网站上的模块参
考手册上没有。遂发现了gtk的网站,熟悉了一下使用gtk编写GUI程序的基本方法后,继续
试图看btdownloadgui的图形部分,有些明白,但是还是感觉到有些吃力。
开始尝试转移一下目标,先看btmaketorrentgui,研究一下种子文件是怎么生成的,如
果心里对种子文件的结构有了解再研究下载部分的代码应该能轻松些。这部分比较成功得完
成了,学习到了BT的种子文件的结构,还对gtk的GUI程序编写也比较熟悉了。
接下来看的是tracker部分的代码,看的时候基本上都看完了,知道了一个tracker是如
何得与客户端通信。但是对于一些具体的数据结构可能还会存在一些模糊的地方。
最后回过头来看btdownloadgui的代码,发现终于可以顺利得看下去了。然后将所有看
到的结果总结起来,学习到了BT的通信协议。
今后的部分将把以上说的学习过程具体展开。
- BT源代码学习心得(一):总体描述 -- 转贴自wolfenstein (NeverSayNever)
- BT源代码学习心得(一):总体描述 -- 转贴自wolfenstein (NeverSayNever)
- BT源代码学习心得(九):客户端源代码分析(图形界面浅析) -- 转贴自 wolfenstein (NeverSayNever)
- BT源代码学习心得(十):客户端源代码分析(相关对象一览) -- 转贴自 wolfenstein (NeverSayNever)
- BT源代码学习心得(九):客户端源代码分析(图形界面浅析) -- 转贴自 wolfenstein (NeverSayNever)
- BT源代码学习心得(十):客户端源代码分析(相关对象一览) -- 转贴自 wolfenstein (NeverSayNever)
- BT源代码学习心得(二):程序运行参数的获取 -- 转贴自 wolfenstein (NeverSayNever)
- BT源代码学习心得(三):种子文件的编码方式 -- 转贴自wolfenstein (NeverSayNever)
- BT源代码学习心得(四):种子文件的生成 -- 转贴自wolfenstein (NeverSayNever)
- BT源代码学习心得(五):统一网络服务接口--RawServer -- 转贴自 wolfenstein (NeverSayNever)
- BT源代码学习心得(六):跟踪服务器(Tracker)的代码分析(初始化) -- 转贴自 wolfenstein (NeverSayNever)
- BT源代码学习心得(二):程序运行参数的获取 -- 转贴自 wolfenstein (NeverSayNever)
- BT源代码学习心得(三):种子文件的编码方式 -- 转贴自wolfenstein (NeverSayNever)
- BT源代码学习心得(四):种子文件的生成 -- 转贴自wolfenstein (NeverSayNever)
- BT源代码学习心得(五):统一网络服务接口--RawServer -- 转贴自 wolfenstein (NeverSayNever)
- BT源代码学习心得(六):跟踪服务器(Tracker)的代码分析(初始化) -- 转贴自 wolfenstein (NeverSayNever)
- BT源代码学习心得(七):跟踪服务器(Tracker)的代码分析(HTTP协议处理对象) -- 转贴自 wolfenstein (NeverSayNever)
- BT源代码学习心得(八):跟踪服务器(Tracker)的代码分析(用户请求的实际处理) - 转贴自 wolfenstein (NeverSayNever)
- 通过资源的名称,得到保存在R中的ID
- 数据结构常用算法
- 两个SQl数据库中的表相互复制
- Application.StartupPath获取执行文件路径substring()取特定长度字符串取得根目录
- IBM Power虚拟化对金融行业的帮助
- BT源代码学习心得(一):总体描述 -- 转贴自wolfenstein (NeverSayNever)
- Bus Hound 6.01 capture on Windows XP
- sqlserver的DBCC命令使用
- [醒目] 自动生成hql[基于javabean的操作][Java reflect 技术的体现]
- PowerShell入门
- QQ群里问的关于%的问题
- weblogic控制台密码忘记后如何重置
- 关于Adodb.Stream 的使用说明
- BT源代码学习心得(二):程序运行参数的获取 -- 转贴自 wolfenstein (NeverSayNever)