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

正文內(nèi)容

bt下載工具的設(shè)計(jì)和實(shí)現(xiàn)計(jì)算機(jī)-資料下載頁(yè)

2024-12-06 13:03本頁(yè)面

【導(dǎo)讀】BitTorrent協(xié)議是一個(gè)網(wǎng)絡(luò)文件傳輸協(xié)議,它能夠?qū)崿F(xiàn)點(diǎn)對(duì)點(diǎn)文件分享的技術(shù)。節(jié)點(diǎn)下載的種子文件,下載該檔案的速度越快。本文的主要工作內(nèi)容:深入研究了。及BT的關(guān)鍵學(xué)法和策略,對(duì)軟件的系統(tǒng)設(shè)計(jì)進(jìn)行論述。

  

【正文】 下載,它不能再通過(guò)下載速率來(lái)決定哪些 peer 提供上載了。目前采用的解決辦法是:優(yōu)先選擇那些從它這里得到更好下載速率的 peer,保持與它們的疏通,這樣做的理由是盡可能的利用上載帶寬,一旦某一個(gè) peer 完成下載,那么它也就成為了種子。 超級(jí)種子算法 超級(jí)種子概念不是老版本 BT 協(xié)議的一部分。 中的超級(jí)種子的概念是為幫助那些自身帶寬有限(對(duì)支持大的 Torrent 來(lái)說(shuō))的發(fā)起者而設(shè)計(jì)的一種新的做種算法,它能使發(fā)起者減少需要上傳的數(shù)據(jù)量以便 spawn new seeds in the torrent。 當(dāng)一個(gè)做種的 Client 進(jìn)入了超級(jí)種子模式,它的行為將不同于普通的做種者,而是扮成一個(gè)不擁有任何數(shù)據(jù)的普通 Client。當(dāng)其他的 Client 和它建立連接之后,它將通知這些 Clients 自己收到了一個(gè)從未被發(fā)送過(guò)的 Piece(所有 Piece 都被發(fā)送過(guò)的情況是很找畢業(yè)設(shè)計(jì)、項(xiàng)目源碼、編程視頻,就上碼農(nóng)網(wǎng) manong365 20 罕見(jiàn)的),這就使得 Clients 只試圖下載這一個(gè) Piece(而沒(méi)有其他想法)。當(dāng) Clients 下載完這個(gè) Piece 后,超級(jí)種子不再通知他們下載其他的 Pieces 直到它看到剛剛傳送的那一個(gè) Piece 已經(jīng)被至少一個(gè)其他的 Client 提供下載。因此在那之前, Clients 都不會(huì)訪問(wèn)超級(jí)種子的其他 Pieces,這樣就節(jié)省了超級(jí)種子的帶寬。這種方法將提高做種的效率,既讓 Peers 去下載最稀有的數(shù)據(jù)(降低了傳送的多余數(shù)據(jù)量),又限制了傳送給 Peers 的對(duì) Swarm 沒(méi)有任何貢獻(xiàn)的數(shù)據(jù)量。這種算法未出現(xiàn)之前,一個(gè)種子在其他 Client 成為種子之前,可能需要上傳 150%~ 200%于 Torrent 的數(shù)據(jù)量。而現(xiàn)在,一個(gè)運(yùn)行在超級(jí)種子模式下的 Client(對(duì)一個(gè)大的 Torrent 做種),只需要上傳 105%于 Torrent 的數(shù)據(jù)量。這相當(dāng)于一個(gè)普通種子做 種效率的 150%~ 200%。但是,在通常情況下不建議使用超級(jí)種子模式。雖然它有助于稀有數(shù)據(jù)的分發(fā)(因?yàn)樗鼘?duì) Client 的下載選擇做出了限制,同時(shí)也限制了 Clients 下載已經(jīng)部分得到的數(shù)據(jù)),所以超級(jí)種子模式只適用于那些最初做種的 Server。 結(jié)束算法 當(dāng)下載將要結(jié)束時(shí),將會(huì)趨向最后的幾個(gè) piecesections 下載減慢,為了加速下載,客戶端向所有 peers 發(fā)送請(qǐng)求下載其沒(méi)有的 piece。為了保證傳輸過(guò)多的冗余數(shù)據(jù)而到是性能下降,客戶端一旦收到 piecesections,向所有的其他 peers 發(fā)送 cancel 消息。至于什么時(shí)候啟動(dòng) END GAME 算法。規(guī)范沒(méi)有給出推薦值。 防冷落算法 偶然情況下, BT 的 peer 端可能會(huì)被它下載的所有的 peers 端阻塞。這種情況下,此 peer 端的下載速率就很低,直到優(yōu)化 unchock 算法找到更好的 peers 端。為了消除這個(gè)問(wèn)題,當(dāng)超過(guò)一分鐘一個(gè) peer 沒(méi)有從特定的 peer 得到一個(gè) piece 那么 BT 就認(rèn)為它被那個(gè) peer 冷落。并不上傳給它直到優(yōu)化 unchoke(這是對(duì)于上述的優(yōu)化 unchocke 算法的一個(gè)例外),這就常常會(huì)使多于一個(gè) peers 同時(shí)進(jìn)入優(yōu)化 unchoke 狀態(tài) 。從而使下載速率快速恢復(fù)。 最佳無(wú)阻塞算法 當(dāng)同一時(shí)刻通過(guò)多個(gè)連接發(fā)送數(shù)據(jù)時(shí), TCP 擁塞控制的效果很差。這樣, Choking就允許 Peers 使用一種 titfortatish 算法來(lái)確保他們獲得一個(gè)穩(wěn)定的下載速率。下面介紹的 Choking 算法是目前 BT 客戶端中所廣泛采用的。很重要的一點(diǎn)是,所有新的算法既能用在包含他們?nèi)康木W(wǎng)絡(luò)上,也能用在只包含此算法的網(wǎng)絡(luò)上。好的 Choking 算法應(yīng)該滿足如下準(zhǔn)則: TCP 性能,它應(yīng)限制同時(shí)上傳的數(shù)量; 塞和非阻塞狀態(tài)的頻繁切換( Fibrillation); Peer,為它提供上載; (相對(duì)于當(dāng)前的連接)的時(shí)候,試圖啟用他們,稱作Optimistic Unchoking。 目前使用的 Choking 算法中避免 Fibrillation(抖動(dòng))的唯一策略是:每 10 秒更新被阻塞的 Peers。酬謝( Reciprocation)和限制上傳的數(shù)目通過(guò)解除(對(duì)自己感興趣的且擁有最好的上載速率的) 4 個(gè) Peers 的阻塞來(lái)管理。這樣可以獲得最大的下載速率。而這四個(gè) Peers 因?qū)焊信d趣而成為下載者。擁有更好的上載速率(相對(duì)于下載者 而言)但對(duì)自己不感興趣的 Peer 被阻塞,但一旦當(dāng)它對(duì)自己感興趣,則阻塞上載速率最慢的下載者,使其取而代之成為新的下載者。如果一個(gè) Client 擁有完整的資源文件,則它將找畢業(yè)設(shè)計(jì)、項(xiàng)目源碼、編程視頻,就上碼農(nóng)網(wǎng) manong365 21 根據(jù)上載速率而不是下載速率來(lái)決定阻塞哪些 Peer。對(duì)于 Optimistic Unchoked,在任意時(shí)刻都會(huì)有一個(gè)不被阻塞的 Peer 而不管它的上載速率如何(如果它對(duì)自己感興趣,則成為 4 個(gè)下載者中的一員),至于哪一個(gè) Peer 被 Optimistic Unchoked,會(huì)每 30 秒更新一次。最新連接的 Peer 成為 Optimistic Unchoked 的 可能性是其他 Peers 的 3 倍,這將給他們一個(gè)很好的機(jī)會(huì)去完成一個(gè) Piece 的上載。 最稀有算法 BT 中下載 piece 策略為,最稀少最優(yōu)先原則。每個(gè) peer 都優(yōu)先選擇整個(gè)系統(tǒng)中最少的那些片斷去下載,而那些在系統(tǒng)中相對(duì)較多的片斷,放在后面下載,這樣,整個(gè)系統(tǒng)就趨向于一種更優(yōu)的狀態(tài)。如果不用這種算法,大家都去下載最多的那些片斷,那么這些片斷就會(huì)在系統(tǒng)中分布的越來(lái)越多,而那些在系統(tǒng)中相對(duì)較少的片斷仍然很少,最后,某些 peer 就不再擁有其它 peer 感興趣的片斷了,那么系統(tǒng)的參與者越來(lái)越少,整個(gè)系統(tǒng)的性能就下降 ??蛻舳送ㄟ^(guò)保留每個(gè) peer 端的原始 bitfield 域來(lái)決定下載在bitfield 里面出現(xiàn)頻率最小的 piece。程序的具體實(shí)現(xiàn)是通過(guò) have 消息來(lái)計(jì)算。在下載過(guò)程中,會(huì)不停的收到其它 peer 發(fā)來(lái)的 have 消息,每個(gè) have 消息都表明對(duì)方擁有了某個(gè)片斷(即某個(gè)完整的 piece)。那么,為每個(gè)片斷維護(hù)一個(gè)計(jì)數(shù)器,每收到一個(gè) have 消息,相應(yīng)的計(jì)數(shù)器加 1。在選擇片斷的時(shí)候,計(jì)數(shù)器最小的某個(gè)片斷被選中。 “最少優(yōu)先”的一個(gè)例外是在下載剛開(kāi)始的時(shí)候。此時(shí),下載者沒(méi)有任何片斷可供上傳,所以,需要盡快的獲取 一個(gè)完整的片斷。而最少的片斷,通常只有某一個(gè) peer擁有,所以,它可能比多個(gè) peers 都擁有的那些片斷下載的要慢。因此,第一個(gè)片斷是隨機(jī)選擇的,直到第一個(gè)片斷下載完成,才切換到“最少優(yōu)先”的策略。 BT 軟件的模塊的實(shí)現(xiàn) 種子解析模塊的實(shí)現(xiàn) 根據(jù)種子文件的結(jié)構(gòu)信息,我門可以構(gòu)造文件的實(shí)體類,種子文件也可以被稱為元信息文件,它是通過(guò) B 編碼,就是一個(gè) B 編碼的字典。因?yàn)樵谙螺d的文件可能是單個(gè)文件也有可能是多個(gè)文件,所以定義一個(gè)單文件結(jié)構(gòu)體 MetaInfoSingleFile,包含有長(zhǎng)度, md5,名字,還有 piece 的長(zhǎng)度等屬性,然后再定義一個(gè)結(jié)構(gòu)體為多文件結(jié)構(gòu)體MetaInfoMultiFile。對(duì)于種子文件我們相應(yīng)的定義一個(gè) MetaInfo,這個(gè)類保存種子的信息。 .torrent 說(shuō)白就是個(gè)文本文件,對(duì)這文本文件讀取保存到一個(gè)字節(jié)數(shù)組里面, MetaInfo通過(guò)調(diào)用 parse(QByteArray)方法對(duì)字節(jié)數(shù)組進(jìn)行解析,之后種子的所有信息就保存到一個(gè) MetaInfo 對(duì)象中。 Client 與 Traceker 通信模塊的實(shí)現(xiàn) 解析完種子文件以后,種子的所有信息保存在實(shí)體類里面,可以通過(guò)類里面的一些方法獲取種子的信息,完成種 子的解析后,可以從中獲取到 Tracker 服務(wù)器的 URI 后就可以開(kāi)始和 Tracker 進(jìn)行交互,在與 traceker 連接之后, tracker 可以對(duì)一些自己下載進(jìn)度進(jìn)行統(tǒng)計(jì),并且客戶端可以獲取到當(dāng)前下載同一文件的 peer 的 IP 地址和端口號(hào)。BitTorrent 協(xié)議是在 TCP/IP 協(xié)議之上的應(yīng)用層協(xié)議,客戶端使用 HTTP 協(xié)議與 Tracker進(jìn)行通信, Tracker 通過(guò) Http GET 方法獲取請(qǐng)求,然后 Tracker 服務(wù)器返回信息,返回信息是一個(gè)經(jīng)過(guò) B 編碼的字典,包含著可以下載的 peer 的 IP 地址和端口號(hào),和一些 peer找畢業(yè)設(shè)計(jì)、項(xiàng)目源碼、編程視頻,就上碼農(nóng)網(wǎng) manong365 22 的長(zhǎng)度等信息,然后客戶端可以根據(jù)返回信息進(jìn)行連接下載 peer,并且在客戶端下載完成 peer 以后,把相應(yīng)的信息提交 daotracker 服務(wù)器,其他客戶端可以根據(jù) Tracker 服務(wù)器上面的信息得到你的 ip 地址和端口號(hào),別人和你建立連接以后就可以下載你已經(jīng)下載好的 TrackerClient,這個(gè)類主要和 traceker服務(wù)器進(jìn)行通信,包括請(qǐng)求和獲取。 Peer 之間的通信模塊的實(shí)現(xiàn) Peer 之間通信協(xié)議可以稱為 peer 連線協(xié)議,它是一個(gè)基于 TCP 協(xié)議的應(yīng)用層協(xié)議,為防止 有的 peer 只下載不上傳, BT 協(xié)議建議:客戶端只給那些向它提供最快下載速度的 4 個(gè) Peer 上傳數(shù)據(jù),簡(jiǎn)單地說(shuō)就是誰(shuí)向我提供下載,我就提供數(shù)據(jù)供他下載;誰(shuí)不提供數(shù)據(jù)給我下載,我的數(shù)據(jù)也不會(huì)上傳給它??蛻舳嗣扛粢欢〞r(shí)間,重新計(jì)算從各個(gè)peer 處下載數(shù)據(jù)的速度,將下載速度最快的 4 個(gè) peer 解除阻塞,允許這 4 個(gè) peer 從客戶端下載數(shù)據(jù),同時(shí)將其他 peer 阻塞。對(duì)客戶端與其他 peer 建立連接之后,既要做服務(wù)器又要做客戶端,所以相應(yīng)的有個(gè)作為客戶端的類和作為服務(wù)器的類,一個(gè)負(fù)責(zé)從別的 peer 下載片段并且保存,一個(gè)負(fù)責(zé)上傳 本地已經(jīng)下載好的片段 。 軟件出錯(cuò)模塊的實(shí)現(xiàn) 在整個(gè)軟件系統(tǒng)中定義 5 中錯(cuò)誤狀態(tài),并且對(duì)這五種錯(cuò)誤進(jìn)行了相應(yīng)的處理 有 UnknownError,TorrentParseError,InvalidTrackerError,FileErrorServerError 在打開(kāi)種子文件,和文件解析過(guò)程中或通信過(guò)程可能出現(xiàn)不同錯(cuò)誤,要對(duì)不同的錯(cuò)誤進(jìn)行捕獲,并且進(jìn)行處理。 下載任務(wù)狀態(tài)的實(shí)現(xiàn) 對(duì)于整個(gè)軟件來(lái)說(shuō),添加一個(gè)種子文件,即為創(chuàng)建一個(gè)任務(wù),任務(wù)的狀態(tài)分為 : Idle, Paused,Stopping,Preparing,Searching,Connecting,WarmingUp,Downloading, EndGame, peer 與 peer 通信過(guò)程中或 client 與 traceker 服務(wù)器通信過(guò)程中會(huì)影響任務(wù)的狀態(tài)。 軟件主界面模塊的實(shí)現(xiàn) 主界面效果如圖所示 。 找畢業(yè)設(shè)計(jì)、項(xiàng)目源碼、編程視頻,就上碼農(nóng)網(wǎng) manong365 23 圖 53 BT軟件下載任務(wù)效果圖 找畢業(yè)設(shè)計(jì)、項(xiàng)目源碼、編程視頻,就上碼農(nóng)網(wǎng) manong365 24 代碼實(shí)現(xiàn) 添加種子代碼 如圖所示。 圖 55 BT軟件添加種子代碼圖 圖 54 BT軟件添加任務(wù)圖 找畢業(yè)設(shè)計(jì)、項(xiàng)目源碼、編程視頻,就上碼農(nóng)網(wǎng) manong365 25 圖 56 BT軟件種子添加代碼圖 //添加 Torrent bool MainWindow::addTorrent(){ //選擇 torrent 文件 QString fileName = QFileDialog::getOpenFileName(this, tr(請(qǐng)選擇一個(gè)文件),lastDirectory,tr(種子文件 (*.torrent)。所有文件 (*.*)))。 if (()) return false。 lastDirectory = QFileInfo(fileName).absolutePath()。 qDebug()lastDirectoryendl。 //顯示添加種子文件對(duì)話框 AddTorrentDialog *addTorrentDialog = new AddTorrentDialog(this)。 addTorrentDialogsetTorrent(fileName)。 addTorrentDialogdeleteLater()。 if (!addTorrentDialogexec()) return false。 // 添加任務(wù)到列表中需要把種子文件的路徑和 保存路徑作為參數(shù)傳過(guò)去 addTorrent(fileName, addTorrentDialoggetDestinationFolder())。 if (!saveChanges) { saveChanges = true。 QTimer::singleShot(1000, this, SLOT(saveSettings()))。 } return true。 } 解析種子代碼 MetaInfoSingleFile 是相應(yīng)的單文件結(jié)構(gòu)體 MetaInfoMultiFile 是相應(yīng)的多文件結(jié)構(gòu)體 MetaInfo 是相應(yīng)的種子文
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1