迴應你們的要求,特意整理了一開始本身整合的代碼,這樣最簡單,最直接的能夠分析流程,至於文章裏面提供的程序界面更多,須要你們本身開發。html
服務器在抓取和處理同時進行,因此訪問速度慢是有些的,特別是搜索速度經過SQL的like來查詢慢,正在經過分詞改進中。。git
DHT抓取程序開源地址:https://github.com/h31h31/H31DHTDEMOgithub
數據處理程序開源地址:https://github.com/h31h31/H31DHTMgr服務器
經過調試程序你們能夠初步分析DHT網絡是如何加入的,等你們本身分析會了單一線程的方法,後面如何組織多線程應該沒有問題。網絡
接着 [搜片神器]之DHT網絡爬蟲的代碼實現方法 這篇文章接着說明如何進入DHT網絡的原理。多線程
1.DHT必須把本身電腦當服務器,別人纔可以知道本身是誰,因此須要經過UDP綁定端口。函數
2.DHT須要生成一個本身的20位ID號,固然能夠經過隨機一個數值,而後經過SHA1來生成20位的ID號;post
3.初始化他人服務器的IP信息,這樣咱們就能夠從他們那裏查詢咱們要的信息;測試
4.對服務器進行PING操做,服務器就會迴應PONG操做,這樣就代表服務器活動正常.你們能夠看VS調試窗口的輸出信息就能夠分析出一些流程方面的工做。網站
對應的協議說明:http://www.bittorrent.org/beps/bep_0005.html
5.收到信息後,經過回調函數進行相關的保存操做就能夠了。
6.DHT網絡通常PING操做都會有PONG迴應,但發送FINDNODE迴應的不會是所有有的。
7.因爲本身只是假裝正常的BT步驟,並無真正的提供種子下載操做,因此咱們只會發get_peers操做,不會發送annouce_peer操做,等待別人給咱們迴應annouce_peer操做。
8.請求發送速度不能過快,這樣的話本身的帶寬也須要很多,須要考慮每一個IP過一下子再請求操做,以避免進對方的黑名單。
在調試瞭解如何一步步進行DHT網絡操做後,annouce_peer過來的HASH就是真正活躍的種子文件,咱們對此保存就能夠了。
其它不明白的地方,你們須要自行進行調試解決,分析代碼是最好的老師,dht.c dht.h文件可能被我註釋了一些地方,你們本身進行對比,儘可能使用原代碼。
至於如何從DHT網絡直接下載種子文件,須要分析BT種子協議,但通過測試,發現比直接從HTTP網站下載來得慢,直接HTTP下載快不少。
從DHT網絡直接下載種子文件對應的協議說明:
http://www.bittorrent.org/beps/bep_0009.html
http://www.bittorrent.org/beps/bep_0010.html
但願你們多多推薦哦...