freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

bt下載工具的設(shè)計和實(shí)現(xiàn)計算機(jī)(編輯修改稿)

2025-01-11 13:03 本頁面
 

【文章內(nèi)容簡介】 的信息放在 GET 的參數(shù)中;這個請求的大致意思是:我是xxx,我想下載 yyy 文件,我的 ip 是 aaa,我用的端口是 bbb。 tracker 對所有下載者的信息進(jìn)行維護(hù),當(dāng)它收到一個請求后,首先把對方的信息記錄下來,如果已經(jīng)記錄在案,那么就檢查是否需要更新,然后將一部分,并非全部,根據(jù)設(shè)置的參數(shù)已經(jīng)下載者的請求參與下載同一個文件,一個 tracker 服務(wù)器可能同時維護(hù)多個文件的下載,的下載者的信息返 回給對方。 Client 在收到 tracker 的響應(yīng)后,就能獲取其它下載者的信息,那么它就可以根據(jù)這些信息,與其它下載者建立連接,從它們那里下載文件片斷。 BitTorrent 協(xié)議的發(fā)展 最新的 DHT 網(wǎng)絡(luò)技術(shù),使得無 Tracker 下載成為可能。 DHT(Distributed Hash Table,分布式哈希表 )類似 Tracker 的根據(jù)種子特征碼返回種子信息的網(wǎng)絡(luò)。 DHT 全稱叫分布式哈希表 (Distributed Hash Table),是一種分布式存儲方法。在不需要服務(wù)器的情況下,每個客戶端負(fù)責(zé)一個小范圍的路 由,并負(fù)責(zé)存儲一小部分?jǐn)?shù)據(jù),從而實(shí)現(xiàn)整個 DHT 網(wǎng)絡(luò)的尋址和存儲。新版 BitComet 允許同行連接 DHT網(wǎng)絡(luò)和 Tracker,也就是說在完全不連上 Tracker 服務(wù)器的情況下,也可以很好的下載,因?yàn)樗梢栽?DHT 網(wǎng)絡(luò)中尋找下載同一文件的其他用戶。有些軟件 (比特精靈 )還會自動通過 DHT 搜索種子資源,構(gòu)成種子市場。 這種技術(shù)好處十分明顯,就是大大減輕了 Tracker 的負(fù)擔(dān)。用戶之間可以更快速建立通訊。 對越 每一個連入 DHT 網(wǎng)絡(luò)的計算機(jī)就稱為一個 網(wǎng)絡(luò) 節(jié)點(diǎn) ,每一個節(jié)點(diǎn) ,都會得到一個獨(dú)一無二的 ID,相當(dāng)于 DHT 網(wǎng)絡(luò)的身 份表示,當(dāng)然 這個 ID 的計算方法有很多種方法 ,所以就有各種各樣的 DHT 的實(shí)現(xiàn)方式 ,其中 最自然的一種方法就是用他公網(wǎng)上的 IP 來做 ID 的計算原形 ,因?yàn)?每個主機(jī)的 IP 地址 這是獨(dú)一無二的 也是個唯一標(biāo)示,當(dāng)然一個計算機(jī)也可能有多個網(wǎng)卡 ,在 DHT網(wǎng)絡(luò)中 每一個節(jié)點(diǎn)保存了 帶下載的 一部分的資源 那么 ,整個 DHT 的網(wǎng)絡(luò)就是一個大的容器 ,里面存放了一定的資料 ,即整個 DHT 網(wǎng)絡(luò)保存著待找畢業(yè)設(shè)計、項(xiàng)目源碼、編程視頻,就上碼農(nóng)網(wǎng) manong365 8 下載軟件的所有內(nèi)容,對于網(wǎng)絡(luò)中的節(jié)點(diǎn)資源是共享的,但由于 數(shù)據(jù)在各個節(jié)點(diǎn)上 是分散的 ,每個節(jié)點(diǎn)上的資源還會變化 ,所以問題來了 ,如何找到特定的資源存在于某個節(jié) 點(diǎn)上 ,好去索取 。在此 之前 ,曾經(jīng)有許多的方法 ,來解決這個 ,問題比如最早的 napster,就是一個巨大的集中式索引服務(wù)器 ,里面存放了所有的資源的位置 ,這是一個很直觀的解決方案 ,通過索引來查找資源, 但是簡單的方法雖然有效 ,也很脆弱 ,比如他的服務(wù)器萬一掛掉了 ,整個 napster 網(wǎng)絡(luò)就完蛋了 ,而且 ,所有的資源在一起 ,整個服務(wù)器的負(fù)擔(dān)隨著資源的增多而越來越多 ,最后臃腫不堪 ,所以后來就出現(xiàn)了另一種解決方案 ,叫做全分布式非結(jié)構(gòu)化網(wǎng)絡(luò) ,走了另一個極端 ,完全不要中心服務(wù)器 ,每一個節(jié)點(diǎn)維護(hù)一個鄰居列表 ,類似路由器中路由表,告訴你 下載的資源到哪去找, 這樣如果要找一個東西就問鄰居 ,鄰居再問鄰居 ,只要有 ,總有一天被問到答案 ,這就是泛洪式搜索 ,的確在網(wǎng)絡(luò)路由上掀起了一片數(shù)據(jù)洪水 ,最有名的就是 Gnutella 協(xié)議 ,當(dāng)初我在分析 shareaza 的時候就遇到這個協(xié)議了 ,當(dāng)時一頭霧水 ,現(xiàn)在看來這個協(xié)議還被做為 bt協(xié)議的一個補(bǔ)充在被使用著 .還有一種解決方案就是綜合上述兩者的優(yōu)點(diǎn) ,設(shè)置一些超級節(jié)點(diǎn) ,這些節(jié)點(diǎn)就好象 napster 上的中心服務(wù)器 ,里面存放了大量的索引信息 ,這就叫做半分布式結(jié)構(gòu) ,現(xiàn)在流行的 bt 就是這種技術(shù) ,混血的就是強(qiáng)大 。 我這里講的 DHT卻是一個完全分布式結(jié)構(gòu)化拓?fù)渚W(wǎng)絡(luò) ,是一個完全不需要中心服務(wù)器的網(wǎng)絡(luò)拓?fù)?,然而比非結(jié)構(gòu)化的要有更好的搜索機(jī)制 ,不用泛洪 ,目前沒有 BT 應(yīng)用的那么廣 ,不過大家應(yīng)該注意到了 BT 和電騾都先后加入了 DHT 網(wǎng)絡(luò) ,說明這個網(wǎng)絡(luò)還是很有潛力的 ,作為 BT或者電騾協(xié)議的一種補(bǔ)充手段 ,讓你下載的時候 ,能夠找到更多的源 ,提升了性能 ,而且完全不需要中心服務(wù)器 ,也是他的一個優(yōu)點(diǎn) ,這個網(wǎng)絡(luò)有這樣的功能 ,因?yàn)樗悄哿艘欢ǖ闹腔鄣?,不是象上面的那些都是很直觀的解決方案 ,所以他們都不夠強(qiáng)大DHT 利用了一個小聰明 ,把節(jié)點(diǎn)的 id 給利用了起來 ,簡單 的說 ,就是把要找的資源 ,通過hash 算法得到一個規(guī)范的 key,把這個 key 和資源合在一起 ,就是一個信息 ,把這個信息放在和 key一樣或者 距離 最近的那個 id 節(jié)點(diǎn)上 ,這樣你知道自己要找什么 ,用 hash算法得到 key,然后就在 DHT 網(wǎng)絡(luò)里發(fā)布搜索信息 ,指明要和 key 一樣的 id 的節(jié)點(diǎn) ,由于每一個節(jié)點(diǎn)都維護(hù)了一個其他節(jié)點(diǎn)的表 ,所以很快就能找到所要的東西 ,研究表明 ,找到所花費(fèi)的尋址路徑長度和每個節(jié)點(diǎn)所保存的鄰居節(jié)點(diǎn)的個數(shù)有漸進(jìn)曲線關(guān)系 ,所以只要說到這一層 DHT 的奧秘就一目了然了 。 BitTorrent 的軟件要求 軟件 系統(tǒng)設(shè)計要求 設(shè)計一款功能齊備的 BitTorrent 下載軟件,具體要求如下: (1)能夠?qū)崿F(xiàn)對 .torrent 文件的解析并且顯示出來 (2)實(shí)現(xiàn)對任務(wù)的添加,開始,暫停,刪除 (3)實(shí)現(xiàn)多任務(wù)多線程下載 (4)實(shí)現(xiàn)對種子文件的管理 軟件系統(tǒng)實(shí)現(xiàn) 軟件開發(fā)方法:采用面向?qū)ο蠹夹g(shù)開發(fā)方法 找畢業(yè)設(shè)計、項(xiàng)目源碼、編程視頻,就上碼農(nóng)網(wǎng) manong365 9 開發(fā)語言: C++ 開發(fā)集成環(huán)境: QT Creator 使用 c++作為開發(fā)語言, QT 作為 IDE,對 BitTorrent 下載過程進(jìn)行抽象出具體的類。比如任務(wù),種子, tracker 等等。 找畢業(yè)設(shè)計、項(xiàng)目源碼、編程視頻,就上碼農(nóng)網(wǎng) manong365 10 3 需求分析 種子文件解析功能分析 Tracker服務(wù)器功能分析 tracker 服務(wù)器是 BT 下載中必須的角色。一個 BT client 在下載開始以及下載進(jìn)行的過程中,要不停的與 tracker 服務(wù)器進(jìn)行通信,以報告自己的信息,并獲取其它下載client 的信息。這種通信是通過 HTTP 協(xié)議進(jìn)行的,又被稱為 tracker HTTP 協(xié)議,它的過程是這樣的: client 向 tracker 發(fā)一個 HTTP 的 GET 請求,并把它自己的信息放在 GET 的參數(shù)中;這個請求的大致意思是:我是 xxx,我想下載 yyy 文件,我的 ip 是 aaa,我用的端口是 bbb。 tracker 對所有下載者的信息進(jìn)行維護(hù),當(dāng)它收到一個請求后,首先把對方的信息記錄下來(如果已經(jīng)記錄在案,那么就檢查是否需要更新),然后將一部分(并非全部,根據(jù)設(shè)置的參數(shù)已經(jīng)下載者的請求)參與下載同一個文件(一個 tracker 服務(wù)器可能同時維護(hù)多個文件的下載)的下載者的信息返回給對方。 Client 在收到 tracker 的響應(yīng)后,就能獲取其它下載者的信息,那么它就可以根據(jù)這些信息,與其它下載者建立連接,從它們那里下載文件片斷。 Torrent 服務(wù)器功能分析 torrent 服務(wù)器是 也是 BT 下載中必須的角色。 Torrent 服務(wù)器也就一個 peer 服務(wù)器,當(dāng) peer 服務(wù)器從 tracker 服務(wù)器拿到 peer 列表名單的時候,開始和其他 peer 服務(wù)器創(chuàng)建連接,并且不斷和彼此進(jìn)行通信和交換。 它的過程是這樣的: torrent 服務(wù)器向另一個 torrent 服務(wù)器發(fā)送消息,這個消息的大致意思是:我是 xxx,我已經(jīng)下載過 yyy 文件或片段,你可以從我這里直接下載。 然后另一個 torrent 服務(wù)器也向發(fā)送消息,大致意思是 :我這里也有下載一些片段,你看看哪些片段你沒下載過,你可以下載。 軟件需求分析 通過可行性 研究報告通過不同的角度判斷軟件的開發(fā)可行性, 在確定 軟件開發(fā) 可行的情況下, 我們需要 對軟件需要實(shí)現(xiàn)的各個功能進(jìn)行詳細(xì)分析。 對于軟件開發(fā)周期中,需求分析 階段是一個很重要的階段, 因?yàn)檫B需求不明確,怎么才能開發(fā)出符合客戶需求的軟件,在 這一階段做得好,將為整個 軟件開發(fā)項(xiàng)目 的成功打下良好的基礎(chǔ)。我們必須明確我們要做什么。我們要實(shí)現(xiàn)這幾個模塊 : 種子的解析, 連接模塊 , Peer 管理,出錯管理, 任務(wù) 界面管理。 找畢業(yè)設(shè)計、項(xiàng)目源碼、編程視頻,就上碼農(nóng)網(wǎng) manong365 11 4 概要設(shè)計 種子解析模塊 1. 對種子文件進(jìn)行解析,獲得 Traceker 服務(wù)器的地址,待下載文件的文件名和長度, piece 長度和各個 piece 的 hash 值 。 2. 實(shí)現(xiàn)對種子文件中下載多個文件的 解析。 連接模塊 1. 連接 Traceker,根據(jù) HTTP 協(xié)議構(gòu)造獲取 Peer 地址的請求,與 Traceker 建立連接,解析 Traceker 的響應(yīng)信息,從而獲取各個 peer 的 ip 地址和端口號。 Peer 管理模塊 1. 對下載下來的數(shù)據(jù)進(jìn)行 hash 校驗(yàn) ,判斷是否已經(jīng)下載過該 piece。 2. 根據(jù) peer 的 IP 地址和端口號連接 peer,從 peer 處下載數(shù)據(jù)并且將已經(jīng)下載的數(shù)據(jù)上傳給其他用戶 。 出錯處理模塊 1. 出錯處理,在軟件使用的過程中可能出現(xiàn)各種意想不到大錯誤,所有要定義整個系 統(tǒng)可能出現(xiàn)的錯誤類型,并且對錯誤進(jìn)行相應(yīng)的提示或捕獲處理。 窗口界面模塊 1. 本軟件的窗口包括一個帶有菜單欄,工具欄和狀態(tài)欄的主窗口,主窗口又分為任務(wù)樹和任務(wù)列表兩個視圖 。用戶可以通過任務(wù) 樹或者任務(wù)表對結(jié)點(diǎn)進(jìn)行添加,刪除等操作,也可以對任務(wù)進(jìn)行分類,實(shí)現(xiàn)對資源的管理。 圖 41 任務(wù)樹圖 找畢業(yè)設(shè)計、項(xiàng)目源碼、編程視頻,就上碼農(nóng)網(wǎng) manong365 12 圖 42 任務(wù)表圖 找畢業(yè)設(shè)計、項(xiàng)目源碼、編程視頻,就上碼農(nóng)網(wǎng) manong365 13 5 詳細(xì)設(shè)計 系統(tǒng)功能模塊 本軟件的模塊大致如下 。 客戶端主要包括:種子解析,連接管理,片段管理,出錯管理,窗口管理。 Peer 之間 peer 通信主要是通過 tracker 服務(wù)器來確定和誰通信,而 tracker 服務(wù)對 peer的下載信息進(jìn)行維護(hù)。 圖 51 系統(tǒng)功能圖 圖 52 BitTorrent工作原理 找畢業(yè)設(shè)計、項(xiàng)目源碼、編程視頻,就上碼農(nóng)網(wǎng) manong365 14 QT 的信號與槽機(jī)制 QT 是一個跨平臺的 C++ GUI 應(yīng)用 構(gòu)架,它提供了豐富的窗口部件集,具有面向?qū)ο蟆⒁子跀U(kuò)展、真正的組件編程等特點(diǎn),更為引人注目的是目前 Linux 上最為流行的 KDE 桌 面環(huán) 境就 是 建立 在 QT 庫的 基礎(chǔ) 之上 。 QT 支 持下 列平 臺 :MS/WINDOWS9 9 NT 和 2021; UNIX/X11Linux、 Sun Solaris、 HPUX、 Digital Unix、 IBM AIX、 SGI IRIX; EMBEDDED 支持 framebuffer 的 Linux 平臺。伴隨著 KDE 的快速發(fā)展和普及, QT 很可能成為 Linux 窗 口平臺上進(jìn)行軟件開發(fā)時的 GUI 首選。 信號和槽機(jī)制是 QT 的核心機(jī)制,要精通 QT 編程就必須對信號和槽有所了解。信號和槽是一種高級接口,應(yīng)用于對象之間的通信,它是 QT 的核心特性,也是 QT 區(qū)別于其它工具包的重要地方。信號和槽是 QT 自行定義的一種通信機(jī)制,它獨(dú)立于標(biāo)準(zhǔn)的 C/C++ 語言,因此要正確的處理信號和槽,必須借助一個稱為 moc( Meta Object Compiler)的 QT 工具,該工具是一個 C++ 預(yù)處理程序,它為高層次的事件處理自動生成所需要的附加代碼。 在我們所熟知的 很多 GUI 工具包中,窗口小部件 (widget) 都有一個回調(diào)函數(shù)用于響應(yīng)它們能觸發(fā)的每個動作,這個回調(diào)函數(shù)通常是一個指向某個函數(shù)的指針。但是,在 QT 中信號和槽取代了這些凌亂的函數(shù)指針,使得我們編寫這些通信程序更為簡潔明了。 信號和槽能攜帶任意數(shù)量和任意類型的參數(shù),他們是類型完全安全的,不會像回調(diào)函數(shù)那樣產(chǎn)生 core dumps。 所有從 QObject 或其子類 ( 例如 Qwidget) 派生的類都能夠包含信號和槽。當(dāng)對象改變其狀態(tài)時,信號就由該對象發(fā)射 (emit) 出去,這就是對象所要做的 全部事情,它不知道另一端是誰在接收這個信號。這就是真正的信息封裝,它確保對象被當(dāng)作一個真正的軟件組件來使用。槽用于接收信號,但它們是普通的對象成員函數(shù)。一個槽并不知道是否有任何信號與自己相連接。而且,對象并不了解具體的通信機(jī)制。 你可以將很多信號與單個的槽進(jìn)行連接,也可以將單個的信號與很多的槽進(jìn)行連接,甚至于將一個信號與另外一個信號相連接也是可能的,這時無論第一個信號什么時候發(fā)射系統(tǒng)都將立刻發(fā)射第二個信號??傊盘柵c槽構(gòu)造了一個強(qiáng)大的部件編程機(jī)制。 信號與槽的定義 槽:用來接
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1