基于java的多線程下載工具的實現(xiàn)_第1頁
基于java的多線程下載工具的實現(xiàn)_第2頁
基于java的多線程下載工具的實現(xiàn)_第3頁
基于java的多線程下載工具的實現(xiàn)_第4頁
基于java的多線程下載工具的實現(xiàn)_第5頁
已閱讀5頁,還剩44頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

基于JAVA的多線程下載工具的實現(xiàn)摘要隨著現(xiàn)代科技的迅猛發(fā)展,以信息化為基礎(chǔ)的計算機技術(shù)已成為全球信息通信的雛形,計算機的發(fā)展逐漸進(jìn)入一個全新的發(fā)展階段,成為人們現(xiàn)在眾所周知的熱門話題。計算機技術(shù)的發(fā)展,使得網(wǎng)絡(luò)成為人們獲取信息的重要途徑之一。人們獲取數(shù)據(jù),進(jìn)行通信的方式其實就是將數(shù)據(jù)從一方傳送到另一方。但是在傳送的過程中,通常會由于一些突發(fā)狀況,如網(wǎng)絡(luò)接觸不良導(dǎo)致掉線、電腦死機、藍(lán)屏、或者電腦的一些其他原因,使得數(shù)據(jù)傳輸失敗。尤其適當(dāng)用戶看到已經(jīng)傳到快要完成的時候,突然中斷,導(dǎo)致其不得不重新下載,這給用戶帶來了很大的不便。多線程下載可以實現(xiàn)多個任務(wù)同步下載,大大的提高了下在速度,為用戶節(jié)省了時間。因此,研究JAVA多線程下載對人們方便使用下載工具下載內(nèi)容具有重要意義的。關(guān)鍵字JAVA;多線程下載;數(shù)據(jù)傳輸BASEDONTHEREALIZATIONOFTHEJAVAMULTITHREADDOWNLOADTOOLSABSTRACTWITHTHERAPIDDEVELOPMENTOFMODERNSCIENCEANDTECHNOLOGY,REPRESENTEDBYTHEINTERNETALSOOBTAINSTHERAPIDDEVELOPMENTOFCOMPUTERNETWORKTHEREFORE,PROMPTINGTHEDEVELOPMENTOFCOMPUTERHASENTEREDANEWSTAGE,WHICHBECOMEAHOTTOPICTHATISKNOWNTOALLANDEVERYONEHASCONCERNEDTHEDEVELOPMENTOFCOMPUTERTECHNOLOGYMAKESTHENETWORKBECOMEONEOFTHEMOSTIMPORTANTWAYSOFACCESSINGTOINFORMATIONTOGETTHEDATA,THEWAYPEOPLECOMMUNICATEISTOTRANSFERDATAFROMONEPARTYTOANOTHERPARTYBUTINTHEPROCESSOFTRANSFER,USUALLYDUETOSOMEUNEXPECTEDSITUATION,SUCHASNETWORKPOORCONTACTLEADTODROP,COMPUTERCRASHES,BLUESCREEN,ORSOMEOTHERREASONS,THECOMPUTERMAKESAFAILUREINDATATRANSMISSIONPARTICULARLYAPPROPRIATEUSERSHAVESEENITALMOSTFINISHED,SSUDDENLYBREAK,ITHASTODOWNLOADAGAIN,WHICHGIVESTHEUSERAGREATDEALOFINCONVENIENCEMULTITHREADEDDOWNLOADCANIMPLEMENTMULTIPLETASKSYNCHRONOUSDOWNLOAD,GREATLYIMPROVESTHESPEED,WHICHSAVESTIMEFORTHEUSERSTHEREFORE,BECONVENIENTFORPEOPLETOSTUDYJAVAMULTITHREADDOWNLOADINUSINGDOWNLOADTOOLSTODOWNLOADCONTENTISOFGREATSIGNIFICANCEKEYWORDSJAVAMULTITHREADEDDOWNLOADDATATRANSMISSION目錄摘要IABSTRACTII1緒論111課題背景112選題意義1121理論意義1122現(xiàn)實意義213現(xiàn)狀分析214本文結(jié)構(gòu)32常用下載技術(shù)現(xiàn)狀421WEB下載422P2P下載523流媒體下載624多線程下載73相關(guān)概念介紹931JAVA多線程932線程的創(chuàng)建和退出及其函數(shù)調(diào)用933HTTP協(xié)議1034URL和HTTPURL104多線程下載工具需求分析1141用戶需求分析1142可行性分析11421技術(shù)可行性12422經(jīng)濟可行性12423操作可行性1243業(yè)務(wù)流分析125多線程下載工具的設(shè)計1351整體設(shè)計1352模塊劃分1353數(shù)據(jù)下載流程1454關(guān)鍵技術(shù)1555基本操作156多線程下載工具的實現(xiàn)1761下載任務(wù)模塊1762線程啟動模塊1863用戶界面模塊1964下載工具的實現(xiàn)197系統(tǒng)測試2271系統(tǒng)測試環(huán)境22711網(wǎng)絡(luò)環(huán)境22712硬件環(huán)境2372軟硬件配置23721測試程序的啟動23722測試新建下載任務(wù)24723下載任務(wù)測試25結(jié)論26參考文獻(xiàn)27致謝28外文原文29中文翻譯391緒論11課題背景21世紀(jì)的主要特征是數(shù)字化、網(wǎng)絡(luò)化和信息化,它是以網(wǎng)絡(luò)為核心的信息化時代。計算機對社會人類社會生活的各個方面并且對經(jīng)濟的發(fā)展發(fā)揮著無可替代的作用。計算機可以使使用者快速傳輸文件資料,以及使用戶在網(wǎng)上搜索并下載個人所需的各種資料,包括圖片、音樂、小說和視頻等。很多人認(rèn)為現(xiàn)在已經(jīng)是INTERNET的時代,因為計算機在不斷的以各種形式改變著人們的生活和工作,他給各個國家的發(fā)展帶來了巨大的好處,并加快了全球信息化的進(jìn)程。計算機的快速發(fā)展,使得人們對數(shù)據(jù)的獲得要求也越來越高。在計算機發(fā)展初期,用戶獲得數(shù)據(jù)的方式也很簡單,就是以讀取的形式,這種方式下載資料,有很多的弊端,不僅下載速度緩慢,而且當(dāng)計算機由于某種原因斷網(wǎng)、斷電或電腦故障時,就會導(dǎo)致下載失敗,想要重新下載,就必須從頭開始再下載一次。而且,如果是下載較大型的文件,其傳輸速度緩慢,給用戶帶來太多的不便。除此之外,最初的下載方式不支持一次性下載多個文件,只能下載一個。所以對于計算機不斷發(fā)展的今天,研究出一種下載快速又相對穩(wěn)定的下載工具是至關(guān)重要的?,F(xiàn)如今,計算機網(wǎng)絡(luò)以驚人的速度發(fā)展壯大,逐漸走進(jìn)尋常百姓家中,已經(jīng)成為人們生活、學(xué)習(xí)和工作的必須品。而隨著計算機的發(fā)展,對于人們獲取資源的方式也在不斷的更新。開始人們獲取資源的形式是通過訪問服務(wù)器,即人們熟知的C/S模式,C是客戶端,S是服務(wù)端,客戶端通過向服務(wù)器發(fā)送請求,然后服務(wù)器把客戶端所需的數(shù)據(jù)傳遞過去,這是最簡單的傳遞方式。與此相類似的,還有目前流行的P2P(PEERTOPEER)下載技術(shù),它的實現(xiàn)原理是兩個用戶之間可以傳遞信息,而無需經(jīng)過服務(wù)器的傳輸。與C/S模式相比,這種下載方式更加快速便捷。在此基礎(chǔ)上,隨著網(wǎng)絡(luò)的快速發(fā)展,人們還研究出一種流媒體下載技術(shù),這種下載技術(shù)的優(yōu)點在于可以緩存下載,在使用的同時達(dá)到下載的目的,既方便了用戶的使用,也下載了資源,為用戶帶來了很大的方便。由以上的分析可以看出,隨著計算機網(wǎng)絡(luò)的不斷發(fā)展,信息在不斷更新的同時,技術(shù)也在不斷的進(jìn)步,同時新的下載技術(shù)也在運用而生,為人們的生活和工作提供極大的便利。而多線程下載技術(shù),是目前很流行的一種技術(shù),它不僅可以解決多任務(wù)下載,即幾個文件同步下載,也有斷點續(xù)傳的功能,即在因為各種突發(fā)狀況阻止了正常的下載時,會保存已有的下載資料,當(dāng)再一次下載時,會從上一次停止下載的地方開始繼續(xù)下載。多線程下載技術(shù)還可以提高帶寬和CPU的使用效率,可見這種下載技術(shù)與最初的下載技術(shù)相比為用戶帶來了很多的便捷,同時也加快了下載的速度。筆者撰寫本文,就是通過比較已有的下載工具,發(fā)掘其的優(yōu)缺點,在此基礎(chǔ)上研究和分析多線程下載技術(shù),并實現(xiàn)了這一技術(shù)。12選題意義121理論意義從理論意義上看,多線程下載技術(shù)與傳統(tǒng)的下載工具相比,有很多優(yōu)點,這種技術(shù)可以提高下載速度從而增強系統(tǒng)利用率,除此之外由于該技術(shù)能夠支持多任務(wù)同步進(jìn)行下載,所以可以提高CPU的利用率,還能充分利用系統(tǒng)內(nèi)部的有用資源。在如今的科技高速發(fā)展情況下,軟件和新技術(shù)的開發(fā)的更新?lián)Q代速度飛快,人們對更加新穎、更加實用的軟件資源都如饑似渴,電子產(chǎn)業(yè)在擁有良好的市場的前提下,想要發(fā)展的話就必須擁有良好的運作經(jīng)營模式和遠(yuǎn)大的發(fā)展戰(zhàn)略。而實際上國內(nèi)的技術(shù)水準(zhǔn)已經(jīng)與國外許多優(yōu)秀電子企業(yè)的水準(zhǔn)不相伯仲,但是,圍欄網(wǎng)應(yīng)對更加激烈的國際競爭,我們必須不斷研究新技術(shù),提出新設(shè)想,設(shè)計出更加新穎方便的軟件來。因此,我們必須不斷學(xué)習(xí),研究開發(fā)。本課題是基于學(xué)習(xí)JAVA課程以后,對其進(jìn)一步研究,深入探索,并且借鑒前人的觀點而提出來的,在研究前人的技術(shù)后,對JAVA多線程進(jìn)一步探索,做出了多線程下載工具。122現(xiàn)實意義從現(xiàn)實意義上看,電子時代是21世紀(jì)的新型代表,它推動著人們的生活逐漸步入信息化時代。據(jù)不完全統(tǒng)計,近幾年,我國網(wǎng)民以百分之三十多的速度遞增。據(jù)專家組統(tǒng)計目前我國網(wǎng)民的人數(shù)已經(jīng)達(dá)到四億多?,F(xiàn)如今,人們查找資料,第一時間想到的就是從網(wǎng)上獲取,下載自己所需的資源。而用戶對網(wǎng)絡(luò)的要求也不斷加大,他們?yōu)榱斯?jié)省時間,通常會選擇最安全,最穩(wěn)定,下載最快的工具來獲取資源。隨著十八大全面深化改革的提出,科技的發(fā)展占據(jù)著舉足輕重的作用,特別是對計算機技術(shù)的推動有很重要的意義。JAVA多線程下載工具可以為人們提高工作效率,有效利用資源配置有很大的幫助,所以本課題的提出既有一定的理論意義,也有一定的現(xiàn)實意義。13現(xiàn)狀分析線程技術(shù)的提出是在60年代左右開始的,然而,真正將多線程這一技術(shù)使用到操作系統(tǒng)中,是在80年代中期。傳統(tǒng)的UNIX通常也支持多線程技術(shù),但是一般在一個進(jìn)程中只能有一個線程,因此多線程便意味著多進(jìn)程。到目前為止,多線程技術(shù)已經(jīng)被很多操作系統(tǒng)所支持,例如WINDOWS,LINUX。為什么有了進(jìn)程這個概念后,還要引入線程的概念而且多線程技術(shù)和多進(jìn)程技術(shù)的優(yōu)點何在以及什么樣的技術(shù)程序會使用多線程技術(shù)這些都是應(yīng)該首先要考慮的問題。在20世紀(jì)60年代左右,進(jìn)程這一名詞首先在麻省理工學(xué)院的MULTICS系統(tǒng)和IBM的CISS/360系統(tǒng)中被引進(jìn)和說明。進(jìn)程和線程是調(diào)度的基本單位,它們管理的是操作系統(tǒng)的核心部分,線程描述的是進(jìn)程內(nèi)的執(zhí)行,負(fù)責(zé)執(zhí)行包含在進(jìn)程的地址空間中的代碼。進(jìn)程有三個重要特性,分別是第一,獨立性。進(jìn)程是系統(tǒng)中獨立存在的實體,它可以擁有自己獨立的資源。例如文件和設(shè)備描述符等。未經(jīng)進(jìn)程的允許,其他進(jìn)程不能訪問到這些資源。第二,動態(tài)性。程序只是一個靜態(tài)的指令集合,而進(jìn)程是一個正在系統(tǒng)中活動的指令集合在進(jìn)程中加入了時間的概念。進(jìn)程具有自己的生命周期和各種不同的狀態(tài)。第三,并發(fā)性。并發(fā)性由獨立性和動態(tài)性衍生而來。若干個進(jìn)程可以在單處理機狀態(tài)上并發(fā)執(zhí)行。并發(fā)與并行并行,指在同一時刻內(nèi),有多條指令在多個處理機上同時執(zhí)行。并發(fā),指在同一時刻內(nèi),只能有一條指令執(zhí)行,但多個進(jìn)程的指令被快速輪換執(zhí)行,使得在宏觀上具有多個進(jìn)程同時執(zhí)行的效果。線程和進(jìn)程相比有以下優(yōu)點第一,“節(jié)儉”的多任務(wù)操作方式。在LINUX系統(tǒng)下,啟動一個新的進(jìn)程必須分配給獨立的地址空間,建立眾多的數(shù)據(jù)表來維護它的代碼段、堆棧段和數(shù)據(jù)段。運行一個進(jìn)程中的多個線程,彼此之間使用相同的地址空間、共享大部分?jǐn)?shù)據(jù)、啟動一個線程所花費的空間遠(yuǎn)遠(yuǎn)小于啟動一個進(jìn)程所花費的時間。線程間彼此切換所需的時間也遠(yuǎn)遠(yuǎn)小于進(jìn)程間切換所需要的時間。第二,線程間方便的通信機制。對不同進(jìn)程來說,它們具有獨立的數(shù)據(jù)空間,要進(jìn)行數(shù)據(jù)的傳遞只能通過通信的方式進(jìn)行,這種方式費時而不方便。由于同一進(jìn)程下的線程之間共享數(shù)據(jù)空間,它們共享全局變量、共享進(jìn)程指令、大多數(shù)數(shù)據(jù)和打開的文件(如描述字)、信號處理程序和信號處置、當(dāng)前工作目錄、用戶ID和組ID,一個線程的數(shù)據(jù)可以直接為其他線程所用,快捷方便。第三,提高運用程序響應(yīng)。對圖形界面的程序尤其有意義當(dāng)一個操作耗時很長時,整個系統(tǒng)都會等待這個操作,此時程序不會響應(yīng)鍵盤、鼠標(biāo)、菜單的操作使用多線程技術(shù),將耗時長的操作置于一個新的線程,可以避免這種尷尬的情況。第四,使多CPU系統(tǒng)更加有效。操作系統(tǒng)會保證當(dāng)線程數(shù)不大于CPU數(shù)目時不同的線程運行于不同的CPU上。第五,改善程序結(jié)構(gòu)。進(jìn)程分為多個線程,成為幾個獨立或半獨立的運行部分,程序利于理解和修改。第六,數(shù)據(jù)共享問題。有的變量不能同時被兩個線程所修改,有的子程序中聲明為靜態(tài)的數(shù)據(jù)更有可能給多線程程序帶來災(zāi)難性的打擊,帶來了同步問題。這些是最需要注意的問題。14本文結(jié)構(gòu)本文通過參考各學(xué)者們對下載工具的研究內(nèi)容,深入分析各種下載技術(shù)的工作原理以及它們之間的的優(yōu)缺點,著重探討多線程下載技術(shù),并在此基礎(chǔ)上對多線程下載技術(shù)進(jìn)行研究,實現(xiàn)其功能。首先從網(wǎng)絡(luò)的發(fā)展與現(xiàn)狀入手,對網(wǎng)絡(luò)上流行的下載工具進(jìn)行介紹。隨后總體介紹論文的研究內(nèi)容,隨后闡述論文涉及到的相關(guān)技術(shù),對相關(guān)技術(shù)進(jìn)行深入分析,介紹本文設(shè)計用到的相關(guān)概念,最后對全文進(jìn)行總結(jié)。其結(jié)構(gòu)設(shè)置如下第一部分緒論主要論述關(guān)于多線程下載技術(shù)的背景介紹,研究意義,現(xiàn)狀分析等;第二部分主要是分析常用的下載技術(shù)的現(xiàn)狀,并對比分析各種下載技術(shù)的優(yōu)缺點;第三部分對所涉及到多線程下載技術(shù)相關(guān)概念的介紹;第四部分多線程下載技術(shù)的需求分析;第五部分多線程下載技術(shù)的設(shè)計部分;第六部分多線程下載工具功能實現(xiàn)第七部分系統(tǒng)測試。2常用下載技術(shù)現(xiàn)狀網(wǎng)絡(luò)下載工具的技術(shù)的演進(jìn)大體上可以劃分為四個階段,分別是WEB下載、P2P下載、流媒體下載、多線程下載。這些技術(shù)隨著計算機的發(fā)展,不斷有所突破,不斷進(jìn)步著,給人們的生活帶來了極大的方便。以下分別對這些技術(shù)做簡要的介紹,對各自的主要技術(shù)核心做出分析。21WEB下載這種方式在互聯(lián)網(wǎng)上是最常用的,也是最傳統(tǒng)的方式。最初用戶在網(wǎng)上發(fā)送郵件或者下載資料時,都是使用C/S方式。C(CLIENT)是客戶,S(SERVER)是服務(wù)器它們都是在通信過程中的兩個應(yīng)用程序。當(dāng)客戶端向服務(wù)器提出下載請求時,服務(wù)器端收到請求后,就會將信息資源傳輸個給客戶端。最常用的WEB下載方式有兩種,分別是HTTP和FTP,這是兩種常見的傳輸協(xié)議,這兩種協(xié)議規(guī)定了瀏覽器如何向服務(wù)器請求萬維網(wǎng)文檔,并且服務(wù)器如何把文檔傳送給瀏覽器的過程。用戶使用這兩種協(xié)議與服務(wù)器發(fā)生鏈接,然后把數(shù)據(jù)傳送并保存到本地,實現(xiàn)下載的功能。HTTP是HYPERTEXTTRANSPORTATIONPROTOCOL的簡稱,即超文本傳輸協(xié)議。這種下載方式是最傳統(tǒng)的,也是最簡單的一種。其下載的基本原理就是客戶利用HTTP這種特殊的合適和規(guī)則向服務(wù)器傳遞信息,然后服務(wù)器發(fā)出應(yīng)答請求,將數(shù)據(jù)傳輸給用戶并保存到用戶電腦上,以此來實現(xiàn)下載的目的。這種下載方式是最初開始的,其他在后來發(fā)展起來的下載方式都是以HTTP下載為基礎(chǔ)衍生出來的,它在所有的下載方式中發(fā)揮著很重要的作用。然而HTTP下載也存在著一些弊端,在客戶請求下載時,必須先建立TCP連接,然后才能向服務(wù)器發(fā)送下載資源的請求。但是一般服務(wù)器上的數(shù)據(jù)是有限的,有時候客戶可能無法找到自己想要的信息,這就給客戶資料的來源帶來麻煩。并且,在同一時間,可能會有不同的客戶向同一臺服務(wù)器發(fā)送了下載請求,導(dǎo)致服務(wù)器向多個客戶發(fā)送響應(yīng),會減緩響應(yīng)的速度,從而導(dǎo)致下載速度緩慢,影響客戶的工作和學(xué)習(xí)。FTP是FILETRANSFERPROTOCOL的簡稱,中文名是文件傳輸協(xié)議,它是INTERNET上使用最廣的文件傳輸協(xié)議。FTP下載也是網(wǎng)絡(luò)上下載資源很傳統(tǒng)的一種方式。它提供交互式的訪問,允許用戶指明文件類型和格式、可以控制下載數(shù)據(jù)的用戶數(shù)、屏蔽計算機系統(tǒng)的細(xì)節(jié)、可以將下載資源的速度控制在一定的范圍等這些優(yōu)勢。這種下載技術(shù)比較適合下載容量比較大的資源,比如電影、視頻等。WEB下載的工作原理見圖21所示。22P2P下載P2P下載(PEERTOPEER),也叫對等連接指的是兩個主機在通信的過程中不加以分別服務(wù)請求方和服務(wù)提供方,它們是平級的關(guān)系。在通信的過程中,如果兩臺主機之間運行了對等連接軟件即P2P,它們之間的通信就是平等的,對等的。并且,二者之間可以相互下載對方存儲在硬盤中的共享文檔。P2P的工作原理的實質(zhì)還是客戶服務(wù)器的方式,但是其中的每臺主機既可以作服務(wù)器也可以做客戶機,假設(shè)PC1向PC2發(fā)出下載請求,那么PC2作為服務(wù)器把信息傳遞給PC1,而同時PC3向PC1發(fā)出下載請求,此時PC1作為服務(wù)器傳遞數(shù)據(jù)給PC3。所以,PC1在這個過程中,既作為客戶機下載數(shù)據(jù),也作為服務(wù)器傳輸數(shù)據(jù)。這就是P2P的工作原理。有P2P的工作原理可以看出,P2P下載有很多優(yōu)點隨著網(wǎng)絡(luò)的不斷發(fā)展,網(wǎng)絡(luò)開始提供音頻、視頻等服務(wù),利用寬帶上網(wǎng)的人數(shù)也不斷增加。而很多用戶接入寬帶是因為其網(wǎng)速比較快,在下載資料時速度一般較快。這種狀況致使網(wǎng)上的一些服務(wù)器是在超負(fù)荷下工作,有些服務(wù)器甚至在許多用戶不停地訪問時導(dǎo)致癱瘓,無法工作。而P2P下載方式不需要集中式的服務(wù)器,從而不存在集中服務(wù)器導(dǎo)致的瓶頸問題,因而這種下載方式受到很多用戶的青睞。在P2P的工作方式下,所有的文件都是在普通的網(wǎng)絡(luò)用戶之間傳輸,其原理相當(dāng)于許多分散在各地的服務(wù)器,向其他的用戶提供下載資源。而且,P2P下載時,每個主機既是服務(wù)器又是客戶機,與C/S下載方式相比,降低了對服務(wù)器的性能要求,而且資源可以存儲在不同的節(jié)點(即主機)之間,對服務(wù)器的壓力不會很大,實現(xiàn)了負(fù)載均衡。再者,其下載過程是不同的節(jié)點之間進(jìn)行的,其中如果這兩個節(jié)點之間出現(xiàn)了通信不暢通問題時,不會影響到其他主機之間的通信。這些優(yōu)點使得P2P文件下載技術(shù)在INTERNET數(shù)據(jù)下載中占據(jù)了相當(dāng)大的份額,相比WEB下載的比例要多。然而隨著P2P下載技術(shù)的廣泛使用,也產(chǎn)生了一些問題需要解決。這些問題的產(chǎn)生一方面使人們想辦法解決這些問題,另一方面也促使人們開發(fā)更為先進(jìn)的下載技術(shù)。其中最突出的問題就是文件的知識產(chǎn)權(quán)問題,還有就是不法分子會在網(wǎng)上傳播一些非法盜版的、不健康的視頻等,這些問題導(dǎo)致P2P下載技術(shù)很難有效的管理,這使得這一技術(shù)在這方面問題上還存在相當(dāng)大的難度。其實,P2P網(wǎng)絡(luò)是一種較為脆弱的網(wǎng)絡(luò),P2P中節(jié)點之間的關(guān)系,就好比是人與人之間的關(guān)系。這些節(jié)點的建立,就像人際關(guān)系一樣,為了共同的目的或興趣愛好聚集在一起。它們建立關(guān)系的時候是平等互信的,但是當(dāng)網(wǎng)絡(luò)范圍擴大時,它們的關(guān)系很可能就會偏離原來的狀態(tài)。導(dǎo)致節(jié)點之間出現(xiàn)欺騙或傳遞虛假信息,所以P2P建立客戶端服務(wù)器服務(wù)下載請求收到下載請求圖21WEB下載原理圖的關(guān)系是較為脆弱的。而且,在P2P網(wǎng)絡(luò)中,服務(wù)器的身份已經(jīng)不是網(wǎng)絡(luò)的中心,但它扔控制整個網(wǎng)絡(luò)的工作,當(dāng)服務(wù)器出現(xiàn)故障是會導(dǎo)致整個網(wǎng)絡(luò)的癱瘓。而且,目前P2P文件共享程序的大量使用,消耗了網(wǎng)絡(luò)上的大量帶寬,加之用戶一些并非重要文件的隨意下載,以及大量視頻、音頻等較大文件的下載,導(dǎo)致帶寬的浪費更為嚴(yán)重,致使網(wǎng)絡(luò)運營商也沒有從中盈利。除此之外,由于P2P網(wǎng)絡(luò)的不安全性,擁有大量用戶的網(wǎng)絡(luò)很可能成為黑客或不法分子圖利的對象,這些缺點導(dǎo)致P2P極大的不安全性。P2P下載方式的工作原理用圖表示,可見下圖22所示。23流媒體下載流媒體下載技術(shù)具有單一性,它專門用于網(wǎng)絡(luò)多媒體信息的傳播和處理。它與上述兩種下載方式不同的特點是它可以一邊播放一邊下載。它的使用需要一定的緩存。因為一個實時音視頻源或存儲的音視頻文件在傳輸中被分解為許多數(shù)據(jù)包,而網(wǎng)絡(luò)是動態(tài)變化的,各個包選擇的路由可能不同,所以到達(dá)客戶端的時延也不同,可能先發(fā)的數(shù)據(jù)包會后到。所以就要使用緩存來消除時延和抖動,以保證數(shù)據(jù)包順序正確,從而使媒體數(shù)據(jù)能夠連續(xù)輸出。其工作原理是首先它的實現(xiàn)需要合適的傳輸協(xié)議。它不使用TCP協(xié)議,因為TCP協(xié)議需要很多開銷,它不適合傳輸實時數(shù)據(jù)。在流式傳輸實現(xiàn)中,一般采用HTTP/TCP來傳輸控制信息,而用實時傳輸協(xié)議/用戶數(shù)據(jù)報協(xié)議RIP/UDP來傳輸實時數(shù)據(jù)。當(dāng)用戶使用流媒體技術(shù)想要獲得自己做需要的信息時,用戶和服務(wù)器之間就會相互交換信息,使用的協(xié)議是HTTP/TCP,那么就會尋找到所需要的數(shù)據(jù)信息;瀏覽器使用音視頻客戶程序,使用HTTP從服務(wù)器檢索相關(guān)參數(shù)對音視頻客戶程序初始化,這些參數(shù)可能包括目錄、音視頻數(shù)據(jù)的編碼類型與音視頻檢索相關(guān)的服務(wù)器地址信息等;音視頻客戶程序及音視頻服務(wù)器運行實時流協(xié)議,以交換音視頻傳輸所需的控制服務(wù)器PC1PC2PC3圖22P2P下載技術(shù)工作原理信息,實時流協(xié)議提供執(zhí)行播放、快進(jìn)、快倒、暫停及錄制等命令的方法;音視頻服務(wù)器使用RTP/UDP協(xié)議將音視頻數(shù)據(jù)傳輸給音視頻客戶程序,一旦音視頻數(shù)據(jù)抵達(dá)客戶端,音視頻客戶程序即可播放輸出。流媒體技術(shù)應(yīng)用最廣泛的是在視頻點播、遠(yuǎn)程教育等方面。由流媒體的工作原理了解到,這種下載方式一方面可以緩解網(wǎng)絡(luò)傳輸?shù)呢?fù)擔(dān);另一方面可以降低對客戶端緩存的要求。并且流媒體可以實現(xiàn)一邊下載一邊播放的特點,與傳統(tǒng)的下載工具先下載、后播放的方式相比,可以大大的縮短用戶的等待時間,給用戶帶來極大的方便。而且,一般傳輸?shù)奈募容^小,因而傳輸過程中往往比較快速,讀取信息也不會浪費大量的時間,可以很容易的獲得,這樣可以節(jié)省不少花費。再者該技術(shù)與傳統(tǒng)的方式不同,在輸送數(shù)據(jù)過程是不間斷的,所以它能夠很容易的追蹤與用戶有關(guān)系的信息。這一大功能在教育行業(yè)發(fā)揮了很大的作用。流媒體與傳統(tǒng)的下載工具相比還有一個更顯著的優(yōu)勢就是,我們生活中一般的電影和電視都是是單向的,內(nèi)容也是不變的(電視的內(nèi)容可以選擇)。當(dāng)人們觀看時只能被動的接受,不管是什么節(jié)目,不能快進(jìn)、快退隨意選擇,這樣會使瀏覽者沒有選擇權(quán),只能跟隨媒體的選擇,有時會有一些用戶不想看的節(jié)目,但是用戶又必須觀看。而流媒體與傳統(tǒng)的媒體技術(shù)不同,它的資源要比傳統(tǒng)的多,而且是開放性的,內(nèi)容也很豐富,用戶掌握了主動權(quán),可以根據(jù)自己的意愿指揮、控制它,讓流媒體完全為自己主宰,服務(wù)于自身。雖然流媒體技術(shù)有很多優(yōu)點,但是這種技術(shù)是在傳統(tǒng)下載技術(shù)的基礎(chǔ)上,新發(fā)展起來的媒體技術(shù),所以到目前為止它的標(biāo)準(zhǔn)不一,由此其在發(fā)展過程中可以不拘一格,以多種形式發(fā)展,從而促使其快速發(fā)展,但這也使得流媒體的發(fā)展受到障礙。目前,有關(guān)方面也意識到這個問題,研究人員正在擬定一個適合流媒體自身發(fā)展的標(biāo)準(zhǔn)。所以流媒體的發(fā)展在管理、商業(yè)運營等方面還存在一些技術(shù)問題有待解決。流媒體下載技術(shù)的工作原理如圖23所示。24多線程下載多線程是JAVA編程中的一部分,它是實現(xiàn)并發(fā)的一種重要手段,一個進(jìn)程可以通過運行多個線程來并發(fā)地執(zhí)行多項任務(wù)。多線程下載指的是線程通俗的說就相當(dāng)于定位WEB瀏覽器WEB服務(wù)器A/V播放器A/V服務(wù)器元文件HTTP/TCPRTSP/TCP圖23流媒體下載技術(shù)工作原理是通道,就像水流需要渠道一樣,線程是信息傳輸是所需要的通道。一個線程就相當(dāng)于傳輸一個文件所需要的一個通道,同樣的意思多線程就是在同時下載多個資源時必須有多個通道,就像水流從不同的渠道流出一樣,下載的資源信息也是從不同的通道傳輸。當(dāng)有好多個用戶同時申請從一臺服務(wù)器上下載數(shù)據(jù)的時候,這些用戶之間會共享該服務(wù)器的帶寬,當(dāng)級別相同的時候,這些用戶之間會平均獲得下載進(jìn)程。那么,線程越多,得到的資源就會越多,從而在下載資源的時候,其速度相對也會加快。多線程下載技術(shù)的優(yōu)點在于,它不同于單線程,單線程下載時只能發(fā)送一個請求,所以只能下載一個資源。而多線程恰恰相反,它可以同時發(fā)送多個請求,每個請求都會下載資源,這樣可以大大提高下載的速度,而且能夠充分使用主機資源和帶寬?;诙嗑€程下載技術(shù)的優(yōu)點,本文通過分析該技術(shù)的可行性和設(shè)計的總體過程,并實現(xiàn)了該下載技術(shù)。在本課程設(shè)計中,多線程技術(shù)用在新建新任務(wù)和下載線程上,在系統(tǒng)中我們可以開始多個下載線程下載同一個網(wǎng)絡(luò)上的資源而互不干擾。從宏觀上看是并行的,但對于微觀上來說,它卻是并行運行的,線程的運行在操作系統(tǒng)的調(diào)度下,各自得到一定的時間片,當(dāng)某一線程獲取到時間片時,它就進(jìn)入運行狀態(tài)。各個線程按照一定的協(xié)議分別獲取時間片。3相關(guān)概念介紹31JAVA多線程JAVA語言是SUN公司開發(fā)出來的一種面向?qū)ο筮M(jìn)行設(shè)計的編程語言。是一種具有現(xiàn)代性的計算機語言,隨著技術(shù)的不斷更新,JAVA已被廣泛接受并推動了WEB的迅速發(fā)展。JAVA的一大目標(biāo)就是使程序開發(fā)者可以交互程序,對一個問題可以分解成多個任務(wù)來執(zhí)行。而多線程可以使編寫的程序同時執(zhí)行多個任務(wù)。多線程指的是每個正在系統(tǒng)上運行的程序都是一個進(jìn)程。每個進(jìn)程包含一到多個線程。進(jìn)程也可能是整個程序或者是部分程序的動態(tài)執(zhí)行。線程是一組指令的集合,或者是程序的特殊段,它可以在程序里獨立執(zhí)行。也可以把它理解為代碼運行的上下文。所以線程基本上是輕量級的進(jìn)程,它負(fù)責(zé)在單個程序里執(zhí)行多任務(wù)。通常由操作系統(tǒng)負(fù)責(zé)多個線程的調(diào)度和執(zhí)行。線程是程序中一個單一的順序控制流程在單個程序中同時運行多個線程完成不同的工作,稱為多線程多線程為該程序的基石,通過開啟多個線程對資源進(jìn)行請求和下載,使下載速度得到質(zhì)的飛躍,也是該項目的關(guān)鍵。線程有兩組突出的特點,以下來介紹該組概念第一,線程的共性和個性。線程的共性。同一個進(jìn)程中,線程都有共性多個線程將共享同一個進(jìn)程虛擬空間。線程共享的環(huán)境包括進(jìn)程代碼段、進(jìn)程的公有數(shù)據(jù)(利用這些共享的數(shù)據(jù),線程很容易的實現(xiàn)相互之間的通訊)、線程打開的文件描述符、信號的處理器、進(jìn)程的當(dāng)前目錄和進(jìn)程用戶ID與進(jìn)程組ID。線程的個性。線程的個性是實現(xiàn)并發(fā)性的必要條件。每個線程都有自己的線程ID,這個ID在本進(jìn)程中是唯一的。一個線程切換到另一個線程上時,必須將原有的線程的寄存器集合的狀態(tài)保存,以便將來該進(jìn)程在被重新切換到時能得以恢復(fù)。線程必須擁有自己的函數(shù)堆棧,使得函數(shù)調(diào)用可以正常執(zhí)行,不受其他線程的影響。不同線程應(yīng)該擁有自己的錯誤返回碼變量。第二,線程的并發(fā)性和并行性。線程的并發(fā)性。進(jìn)程內(nèi)至少同時有兩個線程進(jìn)行時才存在并發(fā)性問題。在單處理器上執(zhí)行的多線程的進(jìn)程內(nèi)部,處理器可以在線程之間按照一定策略切換運行,從而實現(xiàn)了同時執(zhí)行。線程的并行性。至少同時需要有兩個線程在執(zhí)行時才存在并行性。在共享存儲多處理器上執(zhí)行的同一個多線程進(jìn)程,在同一時刻內(nèi),有多條指令在多個處理機上同時執(zhí)行。32線程的創(chuàng)建和退出及其函數(shù)調(diào)用1線程的創(chuàng)建以下函數(shù)是線程的創(chuàng)建函數(shù),要創(chuàng)建新的線程,必須調(diào)用該函數(shù)。INTPTHTEAD_CREATEPTHTEAD_TTID,CONSTPTHTEAD_ATTR_TATTR,VOIDFUNCVOID,VOIDARG第一個參數(shù)為指向線程標(biāo)識符的指針,第二個參數(shù)用來設(shè)置線程屬性,第三個參數(shù)是線程運行函數(shù)的起始地址,最后一個參數(shù)是運行函數(shù)的參數(shù)。2線程的退出(1)等待線程的結(jié)束函數(shù)INTPTHREAD_JOINPTHREAD_TTID,VOIDSTATUS第一個參數(shù)為被等待的線程標(biāo)識符,第二個參數(shù)為一個用戶定義的指針,它可以用來存儲被等待線程的返回值。(2)終止線程函數(shù)VOIDPTHREAD_EXITVOIDVALUE_PTR唯一的參數(shù)是函數(shù)的返回代碼。33HTTP協(xié)議HTTP協(xié)議即超文本傳輸協(xié)議,是面向事務(wù)的應(yīng)用層協(xié)議,使用TCP連接進(jìn)行可靠傳輸,它是萬維網(wǎng)能夠可靠交換文件(如文本、聲音、圖像等)的重要基礎(chǔ)。瀏覽器和服務(wù)器之間想要通信時,每個網(wǎng)點都有一個服務(wù)器進(jìn)程,用以監(jiān)聽TCP端口80。一旦瀏覽器發(fā)出建立連接請求,如果服務(wù)器監(jiān)聽到該請求,就建立了TCP連接,瀏覽器就像服務(wù)器發(fā)出請求,服務(wù)器就會返回所請求的信息作為響應(yīng)。最后,將TCP連接釋放。在整個過程當(dāng)中,所遵循的規(guī)則就是HTTP協(xié)議。它使用了面向連接的TCP作為傳輸曾協(xié)議,能夠保證數(shù)據(jù)的可靠傳輸。但是要說明的是,在客戶端瀏覽器和服務(wù)器建立連接時不一定必須使用TCP三次握手來實現(xiàn),HTTP只是假定它的傳輸層協(xié)議是可靠的,因此HTTP協(xié)議的下層協(xié)議只要是可靠的傳輸協(xié)議都可以被HTTP協(xié)議使用。雖然這種完成一次便斷開連接的形式,看起來增加了下次通信連接的網(wǎng)絡(luò)開銷,但是,站在服務(wù)器的角度來看,這種方式可以減少服務(wù)器的持續(xù)連接的開銷,當(dāng)有多個客戶端連接該服務(wù)器時,這種保持連接的消耗會變得非常巨大,以至于服務(wù)器不能再接收更多客戶端的連接,減少了服務(wù)器的利用率。34URL和HTTPURLURL即統(tǒng)一資源定位符,是表示從INTERNET上得到的資源位置和訪問這些資源的方法。它給資源(如文件、圖像、視頻等)的位置提供了一種抽象的識別方法,這樣就可以給資源定位,通過這種定位,系統(tǒng)就可以對它們實施一些操作,如查找。存儲等。URL一般由四部分組成,它的表示方法是/因為萬維網(wǎng)的訪問要使用HTTP協(xié)議,那么能夠標(biāo)識這個地址的唯一東西就是HTTP的URL。此時的表示方法就是HTTP/例如當(dāng)訪問太原理工大學(xué)的網(wǎng)頁時,其URL就是HTTP/WWWTYUTEDUCN4多線程下載工具需求分析41用戶需求分析信息化時代的今天,網(wǎng)絡(luò)成為人們生活、工作的必須品,人們獲取資料的方式也是通過網(wǎng)絡(luò)來得到。人們對網(wǎng)絡(luò)需求增加的同時,對其要求也逐漸嚴(yán)格。他們都希望以最快的速度獲取信息,甚至不想多等一分鐘,有的人可能想著只要輕觸鍵盤就能獲得所需要的信息。例如,人們在網(wǎng)上希望找到自己想要下載的視頻、音樂等。人們現(xiàn)在不單是使用瀏覽器關(guān)注網(wǎng)頁上的東西,很多人們喜歡用一些軟件下載自己想要的資料,而且對下載工具的速度和安全性要求越來越高。而多線程下載技術(shù)能夠在同一時間運行多個線程,也就是說它可以同時下載多個資源,通俗的說就是可以將一個下載工作劃分為幾個小任務(wù)共同完成,這樣可以在很大程度上提高資源的下載效率。傳統(tǒng)的下載工具很難解決這樣一個問題,就是如果下載的文件較大,或者所需的時間較長時,那么此時對計算機和網(wǎng)絡(luò)的要求就很高。也就是在此過程中,計算機不能出任何問題,否則下載就會失敗。例如有時計算機會斷電、或者斷網(wǎng)、或者造成死機、藍(lán)屏等,這時必須重啟計算機。那么,要是傳統(tǒng)下載工具的話,之前下載的東西就會丟失,還要重新開始下載,這就會浪費用戶大量的時間。而多線程下載,有一個功能就是斷點續(xù)傳,意思是當(dāng)有意外終止下載時,下載任務(wù)不會因此丟失,開始重新下載時,計算機會從停止的位置繼續(xù)下載,這樣可以減少不必要的麻煩,節(jié)省了大量的時間,所以多線程下載受到很多用戶的喜愛。見下表1所示,整合了該系統(tǒng)的需求分析表。表41多線程下載需求分析表序號功能名稱功能描述1多線程一個下載任務(wù)同時由多個線程同時下載2支持HTTP協(xié)議能夠下載HTTP類型的資源數(shù)據(jù)3斷點續(xù)傳當(dāng)斷電或關(guān)閉下載任務(wù)后,下次能夠繼續(xù)下載4圖形界面輸入URL地址,保存地址和文件名,線程數(shù)42可行性分析可行性分析的目的就是對所作的系統(tǒng)進(jìn)行分析,確定該系統(tǒng)是否可行。就是開發(fā)人員盡可能用較小的人力、物力、財力達(dá)到所期望的目的。其中基本的可行性分析包括技術(shù)可行性、經(jīng)濟可行性和社會可行性。下邊分別從這三方面探討多線程下載技術(shù)實現(xiàn)的可行性。421技術(shù)可行性多線程是JAVA語言的中很重要的一部分知識,而JAVA語言是目前使用最多的語言之一。多線程是實現(xiàn)并發(fā)的一種主要手段。在JAVA現(xiàn)有語言的基礎(chǔ)上,完全可以實現(xiàn)多線程下載這一任務(wù)。在開發(fā)過程中,其技術(shù)方案是開發(fā)工具ECLIPSEJDK開發(fā)環(huán)境WINDOWS運行環(huán)境WINDOWS422經(jīng)濟可行性經(jīng)濟可行性分析要估計項目的效益和成本,分析項目經(jīng)濟上是否合理和可行,能夠在最低成本的情況下,開發(fā)出最大價值的軟件。經(jīng)濟可行性解決的最重要的兩大問題是資金可得性和經(jīng)濟合理性。而多線程下載技術(shù)的開發(fā),在很大程度上可以為用戶帶來便捷,能夠提高下載速度。而該下載程序的開發(fā)也不會消耗太多的資源,所以在這方面該軟件完全符合。423操作可行性該下載程序設(shè)計好后,對用戶的計算機能力要求不高,只需要會計算機的基本操作即可。而且,程序設(shè)計的界面友好、操作非常簡單,用戶不用花費太多的時間去學(xué)習(xí),所以很容易被用戶接受。所以,從操作可行性來看,該下載工具也是相當(dāng)可行的。43業(yè)務(wù)流分析多線程下載工具的業(yè)務(wù)流程是用戶需要下載信息時,首先需要登錄下載系統(tǒng),然后在新建的任務(wù)列表中填寫與下載資源有,關(guān)的下載信息,例如資源的URL地址,資源的存儲路徑,以及下載任務(wù)所需的線程數(shù)等。填寫好信息時,軟件會自動發(fā)送HTTP協(xié)議請求,服務(wù)器收到下載請求后,會返回相應(yīng)的相應(yīng)消息。服務(wù)器確定下載消息的信息無誤后,就會啟動線程。從而將緩存中存儲的數(shù)據(jù)最終存儲到目的存儲路徑。除此之外,系統(tǒng)還可以完成一些基本操作,如停止、繼續(xù)、刪除任務(wù)等。以便用戶在下載資源時隨時掌控。5多線程下載工具的設(shè)計51整體設(shè)計隨著計算機的發(fā)展,人們獲取資源的途徑逐漸轉(zhuǎn)移到計算機,大部分人們都喜歡從網(wǎng)上尋找想要的信息。而且,人們對資源需求加大的同時,對下載的需求也增大。人們往往喜歡一次性把資源加入下載列表,這樣下載是花費的時間也不斷增加,用戶的需求不斷充斥著下載工具的下載效率和速度。而多線程下載技術(shù),恰恰能夠有效的提高下載的速度。因為多線程下載技術(shù)最大的優(yōu)點就是能夠充分地利用調(diào)制解調(diào)器的數(shù)據(jù)傳輸能力,從而達(dá)到在最短的時間內(nèi)將一個軟件下載過來的目的。筆者就是通過對比分析傳統(tǒng)的下載技術(shù)和多線程下載技術(shù),分析多線程下載的特點,并研究和實現(xiàn)了JAVA多線程下載的開發(fā)。52模塊劃分本系統(tǒng)可以劃分為以下3大模塊1下載任務(wù)模塊對下載任務(wù)的URL資源進(jìn)行定位,并開啟線程將資源輸出流寫入到本地計算機下載文檔中對應(yīng)文件的固定位置。2線程啟動模塊對下載任務(wù)線程進(jìn)行配置與啟動,相當(dāng)于整個系統(tǒng)的總裝模塊,從用戶界面取得URL參數(shù),并對下載線程配置并啟動。3用戶界面模塊給用戶可視化的界面進(jìn)行操作,使下載工具有一個較高的易用性,通過界面,用戶將URL路徑傳遞給程序,完成下載任務(wù)。用戶界面包含的內(nèi)容有菜單欄、工具欄和下載信息欄。其界面親和力強,用戶易于操作,用戶容易掌握。用戶界面的功能圖見圖51所示。圖51用戶界面功能圖用戶在下載資源時,可以將任務(wù)分為以下幾部分開始時,要新建下載任務(wù),開始下載任務(wù),中途可以暫停下載任務(wù),刪除下載任務(wù),打開文件目錄,獲取下載源文件消息,判斷獲取的URL地址是否是有效的等功能。用戶界面按鈕工具條添加下載任務(wù)主窗口屬性面板53數(shù)據(jù)下載流程用戶調(diào)度多線程下載全部線程運行是否生成下載文件結(jié)束圖52多線程下載數(shù)據(jù)流程圖見圖52所示,描述了該下載工具的整個數(shù)據(jù)流程。用戶想要下載資料時,先要進(jìn)入用戶下載界面,新建一個任務(wù)欄,然后將與所下載資料的信息填入任務(wù)欄,例如URL地址。然后下載工具的進(jìn)程會想服務(wù)器發(fā)送HTTP報文請求,服務(wù)器收到請求后,會同時返回響應(yīng)報文。如果用戶填入的地址是正確的,服務(wù)器確認(rèn)后,就會啟動線程,下載資源。如果是不合法地址,下載將無法正常進(jìn)行,用戶需要核對地址,輸入合法的URL。下載好的資源就會存儲到事先建立的文件夾。當(dāng)整個過程完成后,下載就結(jié)束了。54關(guān)鍵技術(shù)1HTTPURLCONNECTIONHTTPURLCONNECT類通過HTTP協(xié)議發(fā)送請求道服務(wù)器,并取得服務(wù)器返回的RESPONSE。URLCONNECTION是個抽象類,它有兩個直接子類分別是HTTPURLCONNECTION和JARURLCONNECTION。每個HTTPURLCONNECTION實例生成單個請求,請求后在HTTPURLCONNECTION的輸入或輸出上調(diào)用CLOSE方法可以釋放網(wǎng)絡(luò)資源,但如果在調(diào)用DISCONNECT則可能關(guān)閉BASE套接字。本程序通過HTTPURLCONNECTION可通過SETREQUESTPROPERTY“RANGE“,“STARTPS“,“ENDPAS“可以從不同位置對WEB資源進(jìn)行請求的特點,將資源分拆,并通過多線程技術(shù),每個線程對資源的一部分進(jìn)行下載,實習(xí)多線程下載。2RANDOMACCESSFILERANDOMACCESSFILE用來訪問文件,用SEEK方法來訪問文件位置,并進(jìn)行讀寫。這些記錄的大小不必相同;但是其大小和位置必須是可知的。但是該類僅限于操作文件。RANDOMACCESSFILE不屬于INPUTSTREAM和OUTPUTSTREAM類系的,不使用INPUTSTREAM和OUTPUTSTREAM類中的方法;是一個完全獨立的類,所有方法從零開始寫??偠灾?,它是一個直接繼承于OBJECT的類。RANDOMACCESSFILE的工作方式是把DATAINPUTSTREAM和DATAOUTPUTSTREAM相結(jié)合,然后使用自己的方法,它不支持只寫文件。本程序利用其特性,將由HTTPURLCONNECTION的每一個線程所下載的資源作為一個文件的一部分,最終,當(dāng)下載完成后,可以完好的保持資源的完整性。55基本操作基本操作是在程序中頻繁使用的一些操作,這些操作可能會被執(zhí)行幾十甚至幾百次,當(dāng)這些操作被調(diào)用的時候,為了方便先做簡要說明。下載管理的主要操作有以下幾方面1SOCKET操作1創(chuàng)建一個SOCKET套接字;2綁定一個SOCKET套接字;3打開一個SOCKET套接字;4關(guān)閉一個SOCKET套接字;5通過SOCKET套接字發(fā)送數(shù)據(jù);6從SOCKET接收數(shù)據(jù)。2HTTP連接1創(chuàng)建一個HTTP連接;2打開一個HTTP連接;3關(guān)閉一個HTTP連接;4發(fā)送一個HTTP請求;5接受一個HTTP應(yīng)答。3存儲遠(yuǎn)程文件到本地設(shè)備1創(chuàng)建文件;2打開文件;3關(guān)閉文件;4管理多線程的同步請求。4下載管理1管理多線程的并行下載;2持續(xù)跟蹤下載處理中的每個線程。6多線程下載工具的實現(xiàn)61下載任務(wù)模塊1通過繼承THREAD實現(xiàn)線程,實現(xiàn)構(gòu)造函數(shù)來初始化下載所需信息PUBLICCLASSDOWNTHREADEXTENDSTHREADPUBLICURLURLPUBLICHTTPURLCONNECTIONURLTPUBLICJLABELJLABELPUBLICLONGSTARTPSPUBLICLONGENDPASPUBLICFILEFILEPUBLICLONGTIMEPUBLICLONGTIM1PUBLICLONGTIM2PUBLICDOWNTHREADURLURL,LONGSTARTPS,LONGENDPAS,FILEFILE,JLABELLABELTHISURLURLTHISSTARTPSSTARTPSTHISENDPASENDPASTHISFILEFILETHISJLABELLABEL2重寫RUN()函數(shù),實現(xiàn)對URL資源的定位并取得輸入流PUBLICVOIDRUNTRYURLTHTTPURLCONNECTIONURLOPENCONNECTIONURLTSETREQUESTPROPERTY“RANGE“,“BYTES“STARTPS“ENDPASINPUTSTREAMBISURLTGETINPUTSTREAM3將取得的流寫入文檔對應(yīng)文件固定位置中RANDOMACCESSFILEFOSNEWRANDOMACCESSFILEFILE,“RW“FOSSEEKSTARTPSINTI0INTPA0WHILEPAENDPASSTARTPSIFIBISREAD1FOSWRITEIPA1;CATCHEXCEPTIONEEPRINTSTACKTRACESYSTEMOUTPRINTLN“SUCCEED1“62線程啟動模塊1從用戶界面提取URL,得到URL信息,準(zhǔn)備下載對應(yīng)文件位置PUBLICVOIDPROCESSBTNADDACTIONLISTENERNEWACTIONLISTENERPUBLICVOIDACTIONPERFORMEDACTIONEVENTETRYSTRINGSTEXTGETTEXTURLURLNEWURLSURLCONNECTIONURLTURLOPENCONNECTIONINTLENGTHURLTGETCONTENTLENGTHLABEL1SETTEXT“總大小“LENGTH/1024“KB“INPUTSTREAMINPUTURLTGETINPUTSTREAMSTRINGSSSSPLIT“/“STRINGSS1SSSSLENGTH1FILEFILENEWFILE“D“FILESEPARATOR“DOWN“FILESEPARATORSS12開啟線程,進(jìn)行下載DOWNTHREADDWNSNEWDOWNTHREAD10FORINTI0I10IDWNSINEWDOWNTHREADURL,ILENGTH/10,I1LENGTH/10,FILE,LABEL2DWNSISTARTCATCHEXCEPTIONE1E1PRINTSTACKTRACE63用戶界面模塊1通過繼承JFRAME實現(xiàn)PUBLICCLASSMYDOWNEXTENDSJFRAMEPRIVATEJLABELLABEL1,LABEL2,LABEL3PRIVATEJBUTTONBTNPRIVATEJTEXTFIELDTEXTPUBLICMYDOWNSTRINGSSETTITLESSETLAYOUTNEWFLOWLAYOUTSETSIZE500,85SETDEFAULTCLOSEOPERATIONJFRAMEEXIT_ON_CLOSESETLOCATION100,100BTNNEWJBUTTON“確定“TEXTNEWJTEXTFIELD20LABEL1NEWJLABEL“總大小“ADDTEXTADDLABEL1ADDLABEL2ADDLABEL3ADDBTNPROCESSSETVISIBLETRUE64下載工具的實現(xiàn)1通過資源嗅探器找到資源對應(yīng)URL圖61對應(yīng)URL2打開下載程序,將URL復(fù)制到程序界面圖62URL下載界面3點擊確定,開始下載,等待5個線程全部下載完成圖63URL下載過程界面4打開文件夾,找到下載文件圖64URL下載結(jié)果界面7系統(tǒng)測試71系統(tǒng)測試環(huán)境711網(wǎng)絡(luò)環(huán)境對基于HTTP協(xié)議的多線程網(wǎng)絡(luò)下載系統(tǒng)運行測試,以證明系統(tǒng)的可用性和可行性。測試在網(wǎng)絡(luò)環(huán)境下運行,本測試環(huán)境搭建的是一個普通的局域網(wǎng)環(huán)境,通過ADSL連接INTERNET,同時,在網(wǎng)絡(luò)中有交換機。防火墻等網(wǎng)絡(luò)設(shè)備,在局域網(wǎng)中的一種一臺主機上,運行網(wǎng)絡(luò)下載系統(tǒng),下載遠(yuǎn)程網(wǎng)絡(luò)中的某一資源。系統(tǒng)測試的網(wǎng)絡(luò)環(huán)境見圖71所示。執(zhí)行下載主機1下載主機主機2INTERNET圖71實驗環(huán)境配置圖交換機ADSL防火墻用戶712硬件環(huán)境作為測試,整個測試系統(tǒng)還需要設(shè)定相應(yīng)的硬件及網(wǎng)絡(luò)性能的配置信息,測試網(wǎng)絡(luò)下載系統(tǒng)的硬件配置環(huán)境如表1所示表71網(wǎng)絡(luò)下載系統(tǒng)測試的軟硬件環(huán)境下載主機硬件配置名稱性能參數(shù)CPU233GHZ2(或以上)內(nèi)存20GB硬盤大于所下載文件的容量即可網(wǎng)絡(luò)配置正常連接INTERNET即可軟件環(huán)境名稱版本JRE60理論上講,本下載系統(tǒng)只需在聯(lián)網(wǎng)的條件下就可以運行,對主機性能沒有特殊要求,因為系統(tǒng)是基于JAVA語言開發(fā)而成的,所以在系統(tǒng)運行的主機上,還需要安裝JAVA虛擬機。72軟硬件配置各種配置設(shè)定完后,測試環(huán)境搭建好后,就可以進(jìn)行系統(tǒng)測試。當(dāng)用戶在下載主機上輸入要下載的資源URL信息,然后啟動下載系統(tǒng)。下載系統(tǒng)啟動后,會根據(jù)URL信息去連接資源所在的主機,接著跟主機通信,確定資源文件的大小,然后啟動多線程同時訪問遠(yuǎn)程資源,并通過HTTP協(xié)議將資源文件傳輸?shù)奖镜?。對傳輸?shù)奖镜氐亩鄠€分片數(shù)據(jù),通過文件的寫操作將文件的分片數(shù)據(jù)重構(gòu)為原始的文件,最后將文件存儲到本地。這樣就將遠(yuǎn)程資源從服務(wù)器一端傳輸?shù)娇蛻魴C一端,完成了一次網(wǎng)絡(luò)下載活動。在完成一次下載活動的整個過程中,對系統(tǒng)的性能、指標(biāo)、設(shè)計參數(shù)等進(jìn)行測試,測試結(jié)果如下721測試程序的啟動下載系統(tǒng)部署到主機上后,直接點擊程序啟動按鈕,就可以運行下載系統(tǒng)。網(wǎng)絡(luò)下載系統(tǒng)開始運行后,整個運行及展示的界面如圖72所示。圖72用戶界面圖72所示的是系統(tǒng)運行的主界面,也就是系統(tǒng)設(shè)計中所說的用戶用來操作和管理整個下載過程的統(tǒng)一接口。在菜單欄中,是控制下載的命令按鍵,主界面顯示了所有下載的文件、下載的速度和瞬時下載速度。722測試新建下載任務(wù)在操作菜單中,單擊“新建下載”,就會彈出新建下載的設(shè)置界面,見圖73所示。圖73新建下載任務(wù)在新建下載任務(wù)過程中,需要手動添加需要下載文件的URL信息,系統(tǒng)會將

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論