數(shù)據(jù)備份系統(tǒng)中多線程傳輸和斷點續(xù)傳的設計_第1頁
數(shù)據(jù)備份系統(tǒng)中多線程傳輸和斷點續(xù)傳的設計_第2頁
數(shù)據(jù)備份系統(tǒng)中多線程傳輸和斷點續(xù)傳的設計_第3頁
數(shù)據(jù)備份系統(tǒng)中多線程傳輸和斷點續(xù)傳的設計_第4頁
數(shù)據(jù)備份系統(tǒng)中多線程傳輸和斷點續(xù)傳的設計_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、收稿日期:2004-02-16作者簡介:李順新(1972,男,湖北潛江人,講師,碩士,研究方向為軟件工程學、計算機圖形學和CAD 技術、基于計算機網絡的應用技術。數(shù)據(jù)備份系統(tǒng)中多線程傳輸和斷點續(xù)傳的設計李順新,丁勝,陳建勛(武漢科技大學計算機科學與技術學院,湖北武漢430080摘要:分析了客戶機/服務器中多線程和斷點續(xù)傳實現(xiàn)文件傳輸?shù)脑砗蛯崿F(xiàn)方法,給出了該網絡備份軟件的設計方案和所用到的關鍵技術,從而實現(xiàn)了網絡中數(shù)據(jù)的備份和恢復。該備份軟件的設計基于多線程和Socket 等,完成了計算機網絡系統(tǒng)中多用戶并行數(shù)據(jù)備份與恢復。關鍵詞:多線程;Winsock ;客戶機/服務器;斷點續(xù)傳;文件傳輸中

2、圖分類號:TP393.09文獻標識碼:A 文章編號:1005-3751(200410-0110-04Design of Multi -thread T ransfer and Broken -pointContinuingly -transferring in Data B ackup SystemL I Shun 2xin ,DIN G Sheng ,CHEN Jian 2xun(College of Computer Sci.and Techn.of Wuhan University of Sci.and Techn.,Wuhan 430080,China Abstract :Analys

3、es the principle and realization method of multithread and broken -point continuingly -transferring in client/server.The design scheme and technology are proposed at length.The network backup software is designed based on some key technologies such as multi -thread and Winsock ,consequently ,the dat

4、a backup and restore are realized in network.It is achieved that the data backup and re 2store of computer network system of multi -user.K ey w ords :multi -thread ;winsock ;client/server ;broken -point continuingly -transferring ;file transfer0引言隨著計算機信息化程度的提高,人們的工作、生活對于網絡的信賴性也越來越強,從而使網絡系統(tǒng)及其數(shù)據(jù)的安全性顯得

5、越發(fā)重要。企業(yè)每天產生的數(shù)據(jù)越來越多,企業(yè)的一切經營活動幾乎都以這些數(shù)據(jù)為基礎。如這些數(shù)據(jù)因沒有保護好而遭到破壞的話,企業(yè)要承受的損失將十分巨大。象人為誤操作、硬件損毀、電腦病毒、斷電或是天災人禍等都會造成網絡系統(tǒng)癱瘓、數(shù)據(jù)丟失。避免這種損失的最佳途徑就是為系統(tǒng)進行備份。一個良好的數(shù)據(jù)備份系統(tǒng)為網絡數(shù)據(jù)安全提供了一個可靠的解決方案。用戶在客戶機上選擇備份文件到文件服務器上,有時會存在多個用戶同時將文件備份至服務器,而在服務器端采用多線程技術能實現(xiàn)同時接收多個客戶機上的備份文件,每個客戶機上的一個備份任務在服務器上對應一個線程。1多線程技術原理1.1進程程序載入內存,并分配資源,稱為“一個進程”

6、。進程是一個程序在某個數(shù)據(jù)集上的一次執(zhí)行,它由私有虛擬地址空間、代碼、數(shù)據(jù)及其它該進程可見的操作系統(tǒng)資源組成執(zhí)行程序,一個進程包括一個或多個線程。進程由以下幾部分組成:一個私有的地址空間,它是進程可以使用的一組虛擬內存地址空間;程序的相關代碼、數(shù)據(jù)源;系統(tǒng)資源,比如操作系統(tǒng)同步對象等;1.2線程線程是操作系統(tǒng)分配CPU 時間的基本單位,是進程內的一個執(zhí)行單元,一個線程可以執(zhí)行應用程序的任何部分,包括當前被其它線程執(zhí)行的部分。一個進程的所有線程共享虛擬的地址空間、全局變量和該進程的操作系統(tǒng)資源。一個應用程序至少包括一個主線程,還可創(chuàng)建其它線程,當一個應用程序中的線程個數(shù)大于1時,該線程就稱為多線

7、程1。1.3多線程多線程的含義是將程序任務分成幾個并行的任務,實現(xiàn)并發(fā)執(zhí)行。多線程是指CPU 可以分時處理多個任務,而每個任務都像獨占處理器一樣,其實在只有一個CPU 的情況下,通過采用操作系統(tǒng)把時間分成若干個時間片,然后把一個個時間片分配給每個線程,一個執(zhí)行了的程序就是一個進程2??蛻舳伺c服務器端傳輸過程可用圖1 表示。圖1客戶機/服務器多線程傳輸文件模型圖2一個線程中客戶端/服務器“應答”方式通信模型當有多個客戶端同時向服務器傳輸文件時,服務器端和客戶端建立Socket 連接后自動為用戶端開辟一個文件傳輸線程,用以處理相互間的文件傳輸和接收過程。此時,服務器端同時接受來自多個不同客戶機的通

8、信請求和文件接收,彼此互不干涉,服務器端采用多線程機制,從而達到最大限度利用網絡帶寬,提高網絡傳輸效率3。2斷點續(xù)傳原理不管是客戶備份文件到服務器還是從服務器中恢復文件到客戶機,都涉及到兩臺計算機之間文件傳輸,而斷點續(xù)傳是傳輸?shù)年P鍵。在客戶端發(fā)送文件過程中,若一次執(zhí)行過程未傳送完所有文件流的內容,下次執(zhí)行時不必從頭開始傳送,只需從上次中斷傳輸?shù)奈恢闷痖_始重新傳輸,這就是斷點續(xù)傳的簡單描述4。由于客戶端傳輸過程中是采用數(shù)據(jù)包的形式傳輸,當客戶端中止發(fā)送線程時客戶端中的數(shù)據(jù)包可能未完全發(fā)送完畢,有可能同一個包傳輸兩次,這是因為傳輸過程中由于網絡通信可能產生丟包的現(xiàn)象,即可能讀入部分小于一個數(shù)據(jù)包緩

9、沖區(qū)發(fā)送的內容,也即客戶端發(fā)送的一個數(shù)據(jù)包,服務器端沒有完全接收到,因此客戶端續(xù)傳的起始位置不應從客戶端最后一次傳輸數(shù)據(jù)包時文件流下一個位置,而是根據(jù)服務器端最后一次實際接收到的數(shù)據(jù)包寫入數(shù)據(jù)流后此時數(shù)據(jù)流的位置,作為客戶端重新傳輸?shù)男挛恢?。正常傳輸過程中客戶端與服務器端采用應答方式,即服務器端接收到客戶端傳送的數(shù)據(jù)包后返回給客戶端“接收一個數(shù)據(jù)包完畢,可以傳輸下一個數(shù)據(jù)包”的信息,客戶端收到這個確認信息后發(fā)送端的文件流指針下移單位數(shù)據(jù)包長度,在新位置開始進行下一個數(shù)據(jù)包的傳輸,因此在客戶端沒有中止進程時不會產生丟包,只有客戶端臨時中止傳輸文件線程時產生丟包,下次續(xù)傳該文件時重新發(fā)送該數(shù)據(jù)包5

10、。說明:圖2中單位數(shù)據(jù)長度是一個數(shù)據(jù)包的長度,即8192個字節(jié)。3實現(xiàn)的關鍵技術分析3.1Winsock 實現(xiàn)網絡通信工作原理Winsock 支持TCP/IP 傳輸協(xié)議,在通信中一方作為服務器,另一方作為客戶機。當服務器和客戶機方為建立連接準備好后,服務器首先監(jiān)聽客戶機連接請求,當客戶機對服務器發(fā)出連接請求并且服務器接到客戶機的請求并建立連接后,服務器和客戶機開始進行通信。Socket 是網絡上運行的兩個程序間雙向通信連接的一端。Socket 通信在Windows 中是排隊的形式,由操作系統(tǒng)處理,而且接收方和發(fā)送方相互協(xié)同工作,否則就會造成數(shù)據(jù)丟失。在Socket 編程中,每次發(fā)送和接收一個包

11、,以保證數(shù)據(jù)傳輸?shù)陌踩院头€(wěn)定性,同時也不至于過多地占用系統(tǒng)資源??蛻舫绦蚩梢韵騍ocket 寫請求,服務器111第10期李順新等:數(shù)據(jù)備份系統(tǒng)中多線程傳輸和斷點續(xù)傳的設計將處理此請求,然后通過Socket 把結果返回給客戶。3.2客戶機/服務器模型的Winsock 實現(xiàn)過程在客戶機/服務器模型中,客戶應用程序向服務器程序請求服務。這種方式隱含了在建立客戶機/服務器間通訊時的非對稱性,即客戶應用程序向服務器請求服務,服務程序在指定的端口監(jiān)聽??蛻魴C/服務器模型工作時要求有一套為客戶機和服務器所共識的慣例來保證服務能夠被提供(或被接受。這一套慣例包含了一套協(xié)議。它必須在通訊的雙方都被實現(xiàn)。當服務

12、被提供時通信過程中必然存在“客戶進程”和“服務進程”??蛻魴C/服務器模式在操作過程中采取的是主動請求方式:首先服務器方要啟動,并根據(jù)請求提供相應服務;服務器開始監(jiān)聽后,讓它一直處于一個等待狀態(tài)??蛻舳水a生一個連接線程后,服務器開始連接線程,此時就產生一個一對一的線程。(1服務方:打開一通信端口并告知本地主機,一個服務程序通常在一個眾所周知的地址監(jiān)聽對服務的請求并接受客戶請求。等待客戶請求到達該端口。接收到重復服務請求,處理該請求并發(fā)送應答信號。接收并發(fā)服務請求,要激活一新進程來處理這個客戶請求。新進程處理此客戶請求,并不需要對其它請求做出應答。服務完成后,關閉此新進程與客戶的通信鏈路,并終止。

13、返回第二步,等待另外的客戶請求。關閉服務器。(2客戶方:打開一通信通道,并連接到服務器所在主機的特定端口。向服務器發(fā)出服務請求報文,等待并接收應答;繼續(xù)提出請求。 請求結束后關閉通信通道并終止。從上面的描述過程可知,服務進程一般是先于客戶請求啟動的。服務進程一直處于休眠狀態(tài),直到一個客戶對這個服務的地址端口提出了連接請求。在這個時刻,服務程序被“驚醒”并且為戶提供服務對客戶的請求作出適當?shù)姆磻_@一請求相應的過程可以用圖3表示。只要系統(tǒng)運行,該進程一直存在,直到正常終止或者強迫終止。Delphi 集成開發(fā)環(huán)境中提供了一些網絡組件,其中的Socket 組件類主要包括ClientSocket 和S

14、erverSocket 控件,ClentSocket 控件實現(xiàn)了客戶應用程序的Socket 的功能,圖3客戶機/服務器S ocket 通訊工作模式框圖ServerSocket 控件實現(xiàn)了服務應用程序的Socket 的功能。這兩個控件為套接字的直接使用提供了優(yōu)秀的界面,實現(xiàn)了一些基層協(xié)議。文中使用了ServerSocket 控件,下面給出了ServerSocket 控件的主要屬性及方法。(1Socket 屬性。代表了服務器端監(jiān)聽狀態(tài)的Socket對象。(2Server Type 屬性。用于確定服務器Socket 連接的兩種工作方式:阻塞方式(st ThreadBlocking 和非阻塞方式(st

15、NonBlocking 。在使用阻塞方式時,ServerSocket 控件會自動為每一個新的Socket 連接產生一個新的線程。在該線程處于讀寫狀態(tài)的時候會被懸掛起來,直到所有的消息都被傳送完畢。在使用非阻塞方式的時候,使用異步方式處理所有的讀寫操作。由于服務器端同時相對多個客戶端的傳輸數(shù)據(jù)的請求,因此應配置成阻塞方式。(1Delphi 中的客戶端創(chuàng)建線程(Thread 方法。TThread 是一個能夠在應用程序中創(chuàng)建互不相干的執(zhí)行線程的類。每一個TThread 對象的子類過程就是一個新的執(zhí)行線程。從TThread 類派生出的多個過程就可以使Delphi 的應用程序完成多個線程的工作。要在應用

16、程序中使用線程,必須從TThread 中派生出一個新類,然后重載其相關的方法。當一個應用程序運行時,程序就會將線程裝載到內存中并予執(zhí)行,由此,程序運行就變成了包含一個或幾個,甚至更多線程的過程,這些線程包含了運行這個程序的數(shù)據(jù)、代碼和其它系統(tǒng)資源。Delphi 中多線程的實現(xiàn)可以直接用線程類TThread 來完成工作。211微機發(fā)展第14卷TThread是一個abstract(抽象類,它具有類的基本特性繼承性。TThread作為基類,用繼承的形式來生成子類。以下為客戶端發(fā)送文件線程算法:開始:申請開辟內存空間(大小為一個緩沖區(qū)容量,即8192個字節(jié)從文件流當前指針讀入8192個字節(jié)的數(shù)據(jù)到緩沖

17、區(qū),文件流指針下移8192個單位通過Twinsocketstream發(fā)送緩沖區(qū)中的內容到服務端直到文件流指針指向文件流尾部釋放內存空間發(fā)送結束(2Serversocket端多線程的實現(xiàn)。對于服務器端Socket來說,如果把Server Type設置為st ThreadBlocking,表示采取阻塞方式進行連接,Delphi 中將為每一個阻塞方式的連接自動分配一個新的線程,這樣即使一個客戶正在進行讀寫操作,其它的客戶也不必等待。服務器端處理線程算法如下:開始:等待客戶端在規(guī)定的時間內傳來的數(shù)據(jù)申請開辟內存空間(大小為一個緩沖區(qū)容量,即8192個字節(jié)將接收到數(shù)據(jù)內容放入臨時緩沖區(qū)中將緩沖區(qū)的內容寫

18、入文件流中,且文件流指針下移8192個單位。此時文件流位置保存至該用戶日志表“位置”字段。發(fā)送“接收到數(shù)據(jù)包”信息直到文件流指針指向文件大小的位置釋放內存空間接收結束若發(fā)送文件線程中止時,客戶端傳送的數(shù)據(jù)包可能在服務端未接收到。下次對該文件續(xù)傳時,先通過服務端取得該用戶對該文件傳輸時產生的日志表(表結構見表1的“位置”字段和“文件大小”字段(即待發(fā)送文件長度,客戶端對該文件傳輸時以“位置”字段的大小作為此時該文件傳輸?shù)钠鹗嘉恢?循環(huán)發(fā)送數(shù)據(jù)包,直到文件流指針的位置為“文件大小”字段,表示客戶端發(fā)送該文件結束。當然,其間仍可能線程中止,處理過程同上次斷點一樣,記錄下服務端接收到文件流指針的位置,

19、存入日志表相關字段。其中,客戶端用戶備份日志表,用以記錄服務端接收文件時記錄文件的有關信息。表1用戶備份日志表用戶名客戶端IP地址發(fā)送時間文件名(含路徑位置文件大小結束時間4結束語在數(shù)據(jù)備份系統(tǒng)中,多個客戶可以通過Socket同時傳輸數(shù)據(jù)到服務器中,服務器端通過多線程技術能同時接收處理多個來自不同計算機的數(shù)據(jù),從而更加高效快速地實現(xiàn)了數(shù)據(jù)備份與恢復。文中通過多線程和斷點續(xù)傳原理和實現(xiàn)方法的分析,較好地解決了數(shù)據(jù)備份系統(tǒng)中的多用戶傳輸文件的問題。參考文獻1談音.DEL PHI多線程機制剖析及其應用J.電腦與信息技術,2002,(4:27-29.2鄭琪,方思行.通用多線程服務器的設計和實現(xiàn)J.計算機工程與應用,2003,(16:146-148.3周志華,陳剛,董金祥.基于WEB的跨平臺分布式多線程文件服務器的設計J.計算機工程,2003,(4:41-43.4勞家慶,葉飛越.多線程技術對批量數(shù)據(jù)處理的優(yōu)化J.微型機與應用,2001,(4:11-12.5陳增強,郭嘉琳.具有斷點續(xù)傳功能的文件傳輸系統(tǒng)的設計與關鍵技術J.計算機工

溫馨提示

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

評論

0/150

提交評論