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