斷點續(xù)傳軟件研究論文
在如今的網(wǎng)絡(luò)應(yīng)用中,文件的傳送是重要的功能之一,也是共享的基礎(chǔ)。一些重要的協(xié)議像HTTP,F(xiàn)TP等都支持文件的傳送。尤其是FTP,它的全稱就是“文件傳送協(xié)議”,當初的工程師設(shè)計這一協(xié)議就是為了解決網(wǎng)絡(luò)間的文件傳送問題,而且以其穩(wěn)定,高速,簡單而一直保持著很大的生命力。作為一個程序員,使用這些現(xiàn)有的協(xié)議傳送文件相當簡單,不過,它們只適用于服務(wù)器模式中。這樣,當我們想在點與點之間傳送文件就不適用了或相當麻煩,有一種大刀小用的意味。所以一款簡單有效,且具備多線程斷點續(xù)傳的軟件就成為了必要。
1 引言
以往我們軟件開發(fā)的程序大多是單線程的,即一個程序只有一條從頭至尾的執(zhí)行線索。然而現(xiàn)實世界中的很多過程都具有多條線索同時動作的特性。例如,我們可以一邊看電視,一邊活動胳膊,如果不容許這樣做,我們會感覺很難受。再如一個網(wǎng)絡(luò)服務(wù)器可能需要同時處理多個客戶機的請求等。C++語言的一大特性就是內(nèi)置對多線程的支持。多線程是指同時存在幾個執(zhí)行體,按幾條不同的執(zhí)行線索共同工作的情況,它使得編程人員可以很方便地開發(fā)出具有多線程功能、能同時處理多個任務(wù)的功能強大的應(yīng)用程序。自從“多線程下載”技術(shù)發(fā)明以來,這項技術(shù)得到前所未有的關(guān)注已是不爭的事實。在“網(wǎng)絡(luò)螞蟻”軟件流行開后,許多下載軟件也都紛紛效仿,是否具有“多線程下載”技術(shù)、甚至能支持多少個下載線程都成了人們評測下載軟件的要素!岸嗑程下載”的基礎(chǔ)是WEB服務(wù)器支持遠程的隨機讀取,也即支持“斷點續(xù)傳”。這樣,在下載時可以把文件分成若干部分,每一部分創(chuàng)建一個下載線程進行下載。
2 系統(tǒng)開發(fā)的目的
多線程和傳統(tǒng)的單線程在程序設(shè)計上最大的區(qū)別在于,由于各個線程的控制流彼此獨立,使得各個線程之間的代碼是亂序執(zhí)行,由此帶來的線程調(diào)度問題。由于是多線程進行斷點續(xù)傳,還要考慮記錄多個斷點位置,且記錄斷點位置時也要考慮同步互斥等問題。所有這些都使得這一步比較復雜。但是可以明顯提高網(wǎng)絡(luò)文件的下載速度,F(xiàn)在,不要說編寫專門的下載軟件,在自己編寫的軟件中,加入下載功能有時也非常必要。如讓自己的軟件支持自動在線升級,或者在軟件中自動下載新的數(shù)據(jù)進行數(shù)據(jù)更新,這都是很有用、而且很實用的功能。
3 可行性分析
下載程序功能模塊的實現(xiàn)主要利用了面向?qū)ο蟮腸++高級編程語言。
多線程編程技術(shù)是c++語言的重要特點。多線程編程的含義是將程序任務(wù)分成幾個并行的'子任務(wù)。特別是在網(wǎng)絡(luò)編程中,有很多功能是可以并發(fā)執(zhí)行的。
C++中實現(xiàn)多線程的類有兩種方法:1.擴展Thread類,CreateThread創(chuàng)建線程用它覆蓋Thread類的run方法。2. CFile 文件讀取,生成實現(xiàn)Runnable接口的類并將其它的實例與Thread實例相關(guān)聯(lián)。
Thread類是負責向其它類提供線程支持的最主要的類,要使用一個類具有線程功能,在C++中只要簡單地從Thread類派生一個子類就可以了。
下載程序的具備友好的用戶界面,而且操作簡單易于被用戶接收,使用此下載程序十分方便,因為軟件的操作思路比較清晰,而且用戶實際操作的內(nèi)容較少,所以用戶只需要熟練操作計算機即可。因此從使用操作方面看,此系統(tǒng)得開發(fā)是可行的
4 用戶需求分析
隨著Internet的發(fā)展,進入信息時代后快速獲得網(wǎng)絡(luò)共享資源成為很簡單的事情,人們對互聯(lián)網(wǎng)也有了很大的依賴性。人們甚至希望只輕松點擊鼠標就可以得到自己想要的東西。比如,針對一些專業(yè)的論壇提供了很多相關(guān)資料以方便人們閱讀或了解;還有更多的人希望能過下載到他們喜歡聽得音樂、好看的圖片、喜歡的電影等等。也可以看出人們在上網(wǎng)時再也不單是打開瀏覽器來瀏覽網(wǎng)頁,越來越多的人們開始使用下載軟件來獲取資源。同時人們也更希望使用更新更快的下載軟件。
由于用戶下載需求的增大,也要求下載軟件能夠迅速完成對資源的下載。多線程程序設(shè)計可以很好的解決程序并發(fā)的問題。最恰當?shù)谋扔骶褪怯脩魰械紺PU似乎同時出現(xiàn)在兩個地方,在下載軟件中應(yīng)用多線程技術(shù)可以理解為將一個下載任務(wù)分成若干份來完成,其中的并發(fā)控制將使下載的效率大大提高。
在下載任務(wù)的管理這一塊,用戶不僅希望下載工具具有下載一個一個資源的功能,而且具有批量下載有些相似的或有關(guān)聯(lián)的資源的功能。還有些特殊情況下,用戶在下載任務(wù)開始后由于種種原因希望放棄資源的下載,這就要求下載工具具有刪除任務(wù)的功能了。
為了對下載任務(wù)進行掌控,用戶往往具有設(shè)置下載任務(wù)的線程數(shù),文件下載網(wǎng)址,文件下載存儲目錄和在下載過程中對下載任務(wù)的狀態(tài)進行監(jiān)控等功能需求。
鑒于某些軟件使用初學者甚至某些電腦初學者的實際情況,他們往往需要系統(tǒng)有一個格外的幫助文檔,使他們能夠更快、更好地學會使用斷點續(xù)傳下載軟件,提高效率。
5 系統(tǒng)設(shè)計要點
隨著用戶下載需求的增大,用戶下載的資源越來越大,下載的過程也就越來越久,這就要求下載軟件能夠迅速完成對資源的下載,為了提高下載效率的問題,所以本系統(tǒng)采用多線程的方式來實現(xiàn)下載速率的提高。多線程的優(yōu)點之一是所有線程都可以訪問相同的全局變量和共享資源,它提供了程序設(shè)計的簡捷性與便利性,提高了對信息處理的并發(fā)度,但也帶來了數(shù)據(jù)的訛誤或線程得不到某一資源而被餓死(即死鎖)的可能性。為了避免這些現(xiàn)象的產(chǎn)生,線程在使用共享資源或?qū)ο笄氨仨毇@得一個約束訪問同步對象的權(quán)力,也就是通過同步的機制來控制這種權(quán)力的使用,這就是線程的安全問題。長期以來,斷點續(xù)傳始終是困擾網(wǎng)蟲們的一大難題,眼看著已經(jīng)下載到99%的軟件,卻由于突然掉線而前功盡棄的那種沮喪恐怕人人都經(jīng)歷過,于是本系統(tǒng)采用斷點續(xù)傳的方式來設(shè)計。
本系統(tǒng)設(shè)計的基本目標就是利用編寫一個時下流行的多線程斷點續(xù)傳的程序來研究C++多線程與線程安全的機制。
6 功能需求
一部分是服務(wù)器的應(yīng)用程序,主要用于接受客戶端的連接請求,處理客戶的請求,向客戶發(fā)送結(jié)果和應(yīng)答信息等;一部分是客戶端的應(yīng)用程序,主要用于申請連接服務(wù)器,向服務(wù)器發(fā)送請求和處理服務(wù)器返回的結(jié)果等。
服務(wù)器的啟動、客戶端的連接和消息通信:
服務(wù)器端必須能夠做3件事情:
(1)服務(wù)器要在特定的端口上等待來自聊天客戶的連接請求,并且需要維護一個客戶連接表,以記錄所有成功的連接。
(2)服務(wù)器要及時添加共享的文件目錄,從而供客戶端下載
(3)服務(wù)器還要具有與客戶端通信的能力。
信息通信
客戶端聊天程序需要完成以下5個功能:
(1)客戶端聊天程序要負責建立和維護與服務(wù)器的連接,通過獲取用戶的設(shè)置嘗試與服務(wù)器的連接,并且隨時檢測連接的狀態(tài)。
(2)客戶端聊天程序要把用戶輸入的信息及時發(fā)送到聊天服務(wù)器。一般情況下,當用戶輸入一行信息并且按下回車鍵之后聊天程序就要把這一行信息發(fā)送出去,才能及時地滿足用戶的交互需求。
(3)客戶端聊天程序要隨時準備好接收來自服務(wù)器的信息,隨時把接收到的信息顯示出來,讓用戶及時看到對方的響應(yīng)。
(4)在用戶退出聊天過程時要關(guān)閉與服務(wù)器的連接。比較好的做法是提前通知服務(wù)器,或者直接給服務(wù)器發(fā)送一條退出通知,使得服務(wù)器能夠及時掌握客戶端的連接狀態(tài),把對方客戶的退出信息及時發(fā)送到對等實體上。
(5)客戶端與服務(wù)哭端連接成功后必須知道服務(wù)器端的共享信息,以便自己可以有選擇的進行下載。
【斷點續(xù)傳軟件研究論文】相關(guān)文章:
軟件開發(fā)的性能測試與研究論文11-03
軟件工程中計算思維研究論文03-19
軟件安全性保障框架研究論文11-02
軟件質(zhì)量管理的優(yōu)化對策研究論文10-22