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