簡單多線程下載工具的設(shè)計(jì)與實(shí)現(xiàn)

簡單多線程下載工具的設(shè)計(jì)與實(shí)現(xiàn)

ID:33519350

大小:574.00 KB

頁數(shù):19頁

時(shí)間:2019-02-26

簡單多線程下載工具的設(shè)計(jì)與實(shí)現(xiàn)_第1頁
簡單多線程下載工具的設(shè)計(jì)與實(shí)現(xiàn)_第2頁
簡單多線程下載工具的設(shè)計(jì)與實(shí)現(xiàn)_第3頁
簡單多線程下載工具的設(shè)計(jì)與實(shí)現(xiàn)_第4頁
簡單多線程下載工具的設(shè)計(jì)與實(shí)現(xiàn)_第5頁
資源描述:

《簡單多線程下載工具的設(shè)計(jì)與實(shí)現(xiàn)》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。

1、多線程下載工具的設(shè)計(jì)2.3可行性分析可行性研究實(shí)質(zhì)上是要進(jìn)行一次大大壓縮簡化了的系統(tǒng)分析和設(shè)計(jì)的過程,也就是在較高層次上以較抽象的方式進(jìn)行的系統(tǒng)分析和設(shè)計(jì)的過程。它的目的不是解決問題,而是確定問題是否值得去解決。2.3.1技術(shù)可行性分析通過根據(jù)軟件的需求,對本設(shè)計(jì)的技術(shù)實(shí)現(xiàn)進(jìn)行全面的了解,可以采用java的多線程機(jī)制,通過設(shè)置HTTP1.1的請求頭信息,可以實(shí)現(xiàn)連接遠(yuǎn)程資源的指定偏移位置,通過這個(gè)特性我們就可以實(shí)現(xiàn)多線程及斷點(diǎn)續(xù)傳的功能。所以根據(jù)目前已知的技術(shù),在技術(shù)上實(shí)現(xiàn)多線程下載沒有問題。2.3.2經(jīng)濟(jì)可行性分析從開發(fā)這個(gè)簡單多線程的意義上我們可以看出,贏利不是制

2、作這個(gè)下載工具的目的,而只是為了單純的探索多線程下載的基本原理,綜合運(yùn)用所學(xué)的知識,提高自己的動(dòng)手能力,及查閱資料繼續(xù)學(xué)習(xí)的能力。所以它也就不存在經(jīng)濟(jì)的問題。而從它的意義上來說,絕對值得制作這個(gè)下載工具。2.3.3操作可行性分析由于這個(gè)多線程下載工具所面向的是廣大的互聯(lián)網(wǎng)用戶,所以在設(shè)計(jì)中采用簡潔的GUI界面。也因?yàn)楹啙嵉慕缑嬖O(shè)計(jì)使得系統(tǒng)在操作方式上很容易讓用戶接受。在操作上對一沒有計(jì)算機(jī)操作經(jīng)驗(yàn)的人來說也不會有難度,因此在操作上也是行得通的。3.概要設(shè)計(jì)3.1系統(tǒng)結(jié)構(gòu)圖本系統(tǒng)采用現(xiàn)今比較流行的三層結(jié)構(gòu)進(jìn)行系統(tǒng)分層,這三層分別為GUI表現(xiàn)層,控制層,底層下載操作,文件

3、及網(wǎng)絡(luò)操作,系統(tǒng)的結(jié)構(gòu)圖如圖3-1圖3-1系統(tǒng)結(jié)構(gòu)圖3.2功能流程圖新建下載及恢復(fù)下載功能流程圖見圖3-2,在這里新建任務(wù)與恢復(fù)任務(wù)僅是在任務(wù)的構(gòu)建方式上不一樣,在網(wǎng)絡(luò)操作及下載操作上都沒有什么區(qū)別,這樣的實(shí)現(xiàn)主要得益于對代碼重用性的設(shè)計(jì)。圖3-2新建/恢復(fù)任務(wù)流程圖暫停與停止的功能實(shí)現(xiàn)流程圖見圖3-3,從這個(gè)圖中我們可以發(fā)現(xiàn)和新建任務(wù),恢復(fù)任務(wù)一樣具備同樣的代碼利用,停止線程過程是同一個(gè),他們兩個(gè)在功能上不同僅是暫停任務(wù)時(shí)我們需要將暫停的斷點(diǎn)記錄下來,而停止任務(wù)卻是將斷點(diǎn)記錄給刪除,并刪除已下載的部分文件信息。圖3-3暫停/停止任務(wù)流程圖4.詳細(xì)設(shè)計(jì)4.1獲取網(wǎng)絡(luò)資

4、源獲取網(wǎng)絡(luò)資源是下載過程中的第一個(gè)步驟,也是很關(guān)鍵的一步。由于網(wǎng)絡(luò)的問題是多變的,有可能指定的下載資源已經(jīng)不存在,或者網(wǎng)絡(luò)連接有問題,等一系列的問題,因些在連接資源過程中我們得對于相應(yīng)的連接進(jìn)行相應(yīng)在測試,它是否可行,它的信息是否是我們想要的,這一節(jié)主要就是討論這個(gè)功能。4.1.1功能說明要下載一個(gè)遠(yuǎn)程的資源就需我們能夠先定位到指定的資源,并建立連接。在本模塊中實(shí)現(xiàn)的基本功能說是與遠(yuǎn)程的資源進(jìn)行連接,并測試其連接狀態(tài)。4.1.2設(shè)計(jì)說明在做這個(gè)模塊之前我們得先來了解下HTTP協(xié)議。HTTP協(xié)議就是超文件傳輸協(xié)議,采用了請求/響應(yīng)模型??蛻舳讼蚍?wù)器發(fā)送一個(gè)請求,請求頭

5、包含請求的方法、URI、協(xié)議版本、以及包含請求修飾符、客戶信息和內(nèi)容的類似于MIME的消息結(jié)構(gòu)。服務(wù)器以一個(gè)狀態(tài)行作為響應(yīng),相應(yīng)的內(nèi)容包括消息協(xié)議的版本,成功或者錯(cuò)誤編碼加上包含服務(wù)器信息、實(shí)體元信息以及可能的實(shí)體內(nèi)容。1、連接資源通過JDK的net包中包含的URL及HttpURLConnection兩個(gè)類對網(wǎng)上資源進(jìn)行操作。URL指定網(wǎng)絡(luò)資源的位置,而HttpURLConnection中則封裝了操作指定網(wǎng)絡(luò)資源的方法。在本系統(tǒng)中我設(shè)計(jì)了類ConnectionManager,它的主要功能就是通過提供指定的URL獲取HttpURLConnection對象,為控制層代碼利

6、用HttpURLConnection對象操作網(wǎng)絡(luò)文件提供支持。控制層代碼只要調(diào)用ConnectionManager.getConnection(URL)即可。2、測試連接在網(wǎng)絡(luò)連接過程中可能出現(xiàn)各種各樣的問題,而我們需要的只是連接成功的正確網(wǎng)絡(luò)資源,所以我們有必要對通過ConnectionManager獲取的與服務(wù)器的連接進(jìn)行測試。如果測試成功,即能正確獲取到指定的資源,包括獲取是否支持?jǐn)帱c(diǎn)續(xù)傳的功能,之后我們才對指定的資源進(jìn)行下載操作,否則拋棄信息,并對用戶進(jìn)行相應(yīng)的提示。通過對HTTP1.1協(xié)議的了解,我們知道只要我們發(fā)送一個(gè)指定的請求頭信息,服務(wù)器就會返回一個(gè)攜

7、帶著請求后服務(wù)器處理完成的信息,這個(gè)信息就包括請求是否成功等。我們要做的就是構(gòu)造這樣一個(gè)帶有指定的請求的頭信息發(fā)送到服務(wù)器端,然后查看它返回的響應(yīng)碼,因?yàn)槲覀兺瓿煽赡軓捻憫?yīng)碼中去了解一個(gè)請求是否成功。要設(shè)計(jì)一個(gè)什么樣的請求頭才能符合我們的要求的測試效果呢?通過設(shè)計(jì)請求頭信息中的RANGE字段我們可以指定請求URL指向目標(biāo)資源的偏移量,而不是從頭開始讀。這個(gè)也是斷點(diǎn)及多線程下載資源的一個(gè)重要屬性,我們將在后面作更詳細(xì)說明。如果我們設(shè)置完這個(gè)頭信息并發(fā)送到服務(wù)器端,如果源請求的資源存在并且服務(wù)器支持?jǐn)帱c(diǎn)續(xù)傳,這時(shí)它返回的響應(yīng)碼信息就是206,如果存在但不

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會顯示錯(cuò)亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時(shí)聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請聯(lián)系客服處理。