BT原始碼學習心得(一):總體描述

來源:互聯網
上載者:User

BT原始碼學習心得(一):總體描述
author: wolfenstein

    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的通訊協定。
    今後的部分將把以上說的學習過程具體展開。
  

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.