專利名稱::一種利用p2p直播通道下載文件的方法和裝置的制作方法
技術領域:
:本發明涉及計算機網絡
技術領域:
,特別涉及一種利用P2P直播通道下載文件的方法和裝置。
背景技術:
:P2P視頻點播/直播是互聯網新近興起的一類應用,其主要特點是數據下栽通過P2P的方式,使用戶能夠在線觀看視頻節目,而無需下載整個媒體文件,與傳統的服務器-客戶端模式的網絡視頻點播/直播相比,大大放寬了對網絡帶寬的要求。P2P下載技術也是一種P2P技術在文件下載中的應用,通過所有的客戶端能夠達到減少服務器流量的目的。在實際應用中,往往用戶在觀看P2P視頻直播節目的同時,還需要通過P2P方式下載軟件、音樂、游戲等等網絡資源。但是現有技術中,P2P技術應用于不同的場景并不能做到使用同一種方式。這就導致如果要使用P2P直播技術,則客戶端應用軟件必須帶上直播組件,而如果再想使用P2P下載技術,則客戶端應用軟件不得不添加一個P2P下載組件。對于正在進行P2P視頻點播的客戶端來說,其直播通道已經建立,再創建一個P2P下載通道將耗費更多的資源。
發明內容有鑒于此,本發明實施例提出一種利用P2P直播通道下載文件的方法,包括如下步驟從直播通道接收P2P層的數據包;判斷所接收的數據包是否為用于下載文件的數據類型,若是,則創建臨時文件;接收數據塊,將所接收的數據塊寫入所述臨時文件;判斷是否接收所要下載文件的全部數據塊,若是則結束本流程,否則轉至所述接收數據塊的步驟。本發明實施例還公開了一種利用P2P直播通道下載文件的裝置,包括用于建立直播通道的模塊,以及接收單元,用于從直播通道接收P2P層的數據包;類型識別單元,用于判斷所述接收單元所接收的數據包的類型;下載單元,用于當所述類型識別單元識別的數據包類型為用于下載文件的數據類型,則創建臨時文件,將接收單元所接收的數據包的數據塊寫入所述臨時文件,并判斷是否接收所述要下載文件的全部數據塊,若是則完成對該文件的下載。從以上技術方案可以看出,在直播通道中設置用于進行文件傳輸的數據類型,在直播通道接收該數據類型的數據包,從而可以實現當使用P2P直播傳輸媒體數據流的時候,利用已建立的P2P直播通道傳輸文件,從而達到節省資源的目的。圖1為本發明第一實施例通過P2P直播通道發布文件的流程圖;圖2為本發明第一實施例P2P客戶端處理流程圖;圖3為本發明第二實施例P2P客戶端處理流程圖;圖4為本發明第三實施例的P2P客戶端框圖。具體實施例方式為使本發明的目的、技術方案和優點更加清楚,下面結合附圖對本發明作進一步的詳細闡述。定義使用P2P直播技術傳輸的類型和文件頭、數據塊描述。為了能夠使用P2P的直播通道進行傳輸過程,需要在直播通道中定義一種新的數據類型FILE—STREAM。該數據類型是為了和在P2P直播通道中傳輸的直播視頻節目的數據類型分開。FILE_STREAM包括數據頭和數據塊,其中的數據頭格式描述如表1所示FLE一STREAM文件大小(fileSize)~文件名(fileName)"開始編號(beginNo)"~結束編號(endNo)—l件驗證碼表l在該數據頭格式定義中,具體值如下FILE_STREAM:數據類型標識符。fileSize:該文件的全部大小;filename:文件名稱,可以包含文件后綴名;beginNo:文件開始^:據塊編號;endNo:文件結束數據塊編號。文件驗證碼全部文件的驗證碼信息,給需要做驗證碼校驗的文件使用。其他自選數據文件的其他附加屬性,由文件發布源給出,由文件接收端負責解析,并進行進一步的邏輯處理。數據塊格式如表2所示<table>tableseeoriginaldocumentpage7</column></row><table>表2在數據塊中,具體值定義如下No:編號,由P2P層面給出的唯一數據編號。Size:本塊數據的大小。數據:本塊數據包所帶的全部數據。由于P2P直播通道的屬性,在該類型定義的時候,并沒有定義文件尾數據塊,所有的必須數據都在文件頭數據塊中。本發明第一實施例的通過直播通道發布文件的流程如圖1所示,包括如下步驟步驟101:創建P2P層的直播通道,進行P2P直播層的初始化。步驟102:判斷是否增加了新的需要發布的文件,如果有增加,則執行步驟103,否則執行步驟105。步驟103:讀取所述新的需要發布的文件,創建相應的文件頭包。步驟104:將所讀取的文件信息添加到發布文件列表。表3示出了發布文件列表的一個示例<table>tableseeoriginaldocumentpage8</column></row><table>表3步驟105:從發布文件列表中獲取當前文件信息。步驟106:檢查所述文件信息對應的文件位置的文件是否存在?如果存在,則執行步驟107,否則執行步驟112。步驟107:將當前文件備份到備份文件夾中。步驟108:將所述備份文件進行分塊,每個數據塊大小一般為固定長度。如果大小不夠,則以剩下的長度作為一個數據塊。設置所述備份文件的數據塊的起始編號和結束編號,每個數據塊包括表2所示的編號、數據片大小以及數據,并封裝表1所示的文件頭,組成數據包,并將該數據包發往P2P層的直播通道。步驟109:判斷是否已經到備份文件的末尾了?否,則執行步驟110,是,則執行步驟111。步驟110:等待固定時間,該時間是由P2P直播層規定的,例如設置為1秒。下一步是重復執行步驟108。步驟lll:刪除備份文件。并轉至步驟102。步驟112:將不存在的文件從發布文件列表中刪除掉,并轉至步驟102。在上述流程圖步驟中,并沒有寫出退出步驟,當用戶界面點擊去掉發布后,應該及時在步驟102之前退出整個循環,并結束掉該P2P直播通道。本發明第一實施例的文件接收端處理流程如圖2所示,包括如下步驟步驟201:如果收到一個P2P層的數據包,則轉入步驟202,否則繼續執行步驟201等待下一個數據包。為便于描述,以下將所接收的數據包所屬的文件稱為文件A。步驟202:判斷該^t據包的類型是否為FILE—STREAM,如果為FILE—STREAM,則轉入步驟204,否則轉入步驟203。步驟203:轉入其他工作,由P2P直播的其他工作線程接收該數據包。步驟204:首先創建與文件A對應的臨時文件,i己錄文件的beginNo,endNo,并保存文件驗證碼信息。初始化數據分片管理模塊,(該系統用于記錄文件的某一片是否已經下載成功,只有當文件的每一片都下載成功的時候,才表示文件已經下載成功)。步驟205:是否收到P2P層的數據塊,收到則轉入步驟206,否則,將繼續執行步驟205,等待一個數據塊。步驟206:將收到的數據塊寫入臨時文件,并更新數據分片管理模塊,即標識該數據塊已經收到。這里假設同時只下載一個文件,如果同時下載多個文件,則將所收到的數據塊寫入對應的臨時文件中。步驟207:判斷是否所述beginNo至endNo范圍內的所有數據塊均標識為已收到,如果是則繼續步驟208,否則轉至步驟205。步驟208:關閉文件,并使用驗證碼信息驗證文件,如果成功驗證,則通知上層,文件A結束,并轉入到步驟201,開始另一個文件的下載。由于使用P2P直播通道只是下載文件的一個附件,所以希望在下載的時候不會影響到正常的媒體數據在P2P直播通道中傳輸的效率,因此,限定該P2P直播通道速率是很重要的。在原有的P2P直播通道中就已經支持對傳輸速率的限定,因此只需要沿用該速率限定功能即可。此外,將文件的數據塊大小的劃分也是很重要的,如果數據塊的大小劃分過大,則可能造成網速的降低,而把數據塊的大小劃分過小,則無形中會增加P2P的傳輸效率。經過多項測試,發現P2P直播通道中的文件數據塊大小以lk字節41k字節數據最為合適。本發明第一實施例的技術方案中,可能會存在如下問題問題l:文件A會被循環的在P2P直播通道中傳輸,對于已經下載過文件A的客戶端來說,重復下載該文件將造成浪費。問題2:由于P2P直播通道的限制,文件A在沒有下載完全的情況下,需要在下一次該文件到來的時候重新下載,而已經下載成功的一段數據又會造成浪費。本發明第二實施例針對上述第1、2兩個方面的問題進行了改進,其流程如圖3所示,包括如下步驟步驟301:如果收到一個P2P層的數據包,則轉入步驟302,否則繼續執行步驟301,等待一個頭格式包。步驟302:判斷該數據頭格式的包的類型是否為FILE—STREAM,如果為FILE_STREAM,則轉入步驟304,否則轉入步-驟303。步驟303:按照現有的P2P直播流程,由P2P直播的工作線程接收該包。步驟304:判斷傳輸的文件是否已經在之前的傳輸中被下載完畢,若是則轉入步驟305,否則執行步驟307。本步驟用于克服前面提到的問題1:由于進行了該判斷步驟,則不會重復下載曾經下載過的文件。步驟305:設定定時器,時長為(endNo-beginNo)*單片數據時長,在本實施例中,設置為1秒。當定時器時間到的時候,轉入步驟301。步驟306:判斷該文件是否以前曾經下載過且未下載完全,若是執行步驟308,否則執行步驟307。本步驟用于克服前面提到的問題2,可以避免浪費文件中已經下載的部分數據。步驟307:創建臨時文件,并記錄文件的beginNo,endNo,并保存文件驗證碼信息。初始化數據分片管理模塊,該模塊用于記錄文件的各個分片是否已經下載成功,只有當文件的每一片都下載成功的時候,才表示文件已經下載成功。步驟308:在數據分片管理模塊中,獲取當前未成功下載的下一片數據編號No,并設定定時器,使用定時器的原因是因為P2P直播通道的屬性是流格式,無論是否需要該數據,都始終處于傳輸數據的狀態。設定定時器是為了減少網絡流量,在定時器期間,將不會參與到數據塊的傳輸中,這樣就不會浪費網絡流量了。較佳地,可以先估算需要等待的時間,該時間應當為已經下載文件的最近需要下載的數據塊到當前接收的數據塊之間這段數據塊傳輸所需的時間,因此該等待時間=(最近需要下載的數據塊編號-當前接收的數據塊編號)x傳輸單個數據塊的時間。然后將估算的等待時間設置為定時器的時長。步驟309:定時時間到,判斷是否收到P2P層的數據塊,收到則轉入步驟310,否則,將繼續步驟309,等待一個數據塊。步驟310:將收到的數據塊寫入文件,并更新文件管理系統,即標識該塊數據塊已經收到。步驟311:判斷是否所述beginNo至endNo范圍內的所有數據塊均標識為已收到,如果是則繼續執行步驟312,否則轉入步驟308。步驟312:關閉文件,并使用驗證碼信息驗證文件,如果成功驗證,則通知上層,文件A結束,并轉入到步驟301,開始另一個文件的下載。本發明第三實施例提出一種P2P客戶端,可以在利用P2P技術收看視頻直播節目的同時,利用已建立的直播通道傳輸文件。該客戶端的框圖如圖4所示,包括直播模塊401,用于建立直播通道,以及進行P2P直播的相關處理。接收單元402,用于從直播通道接收P2P層的數據包;類型識別單元403,用于判斷所述接收單元402所接收的數據包的類型;下載單元404,用于當所述類型識別單元403識別的數據包類型為用于下載文件的數據類型,則創建臨時文件,將接收單元402所接收的數據包的數據塊寫入所述臨時文件,并判斷是否接收所述要下載文件的全部數據塊,若是則完成對該文件的下栽。所述下載單元404進一步包括數據分片管理模塊405,用于記錄文件的各個數據塊是否下載成功,若文件的所有數據塊均下載成功,則指示該文件下載成功。所述下載單元404進一步包括歷史判斷模塊406,用于判斷是否已經下載過所要下載的文件,若是,則進一步判斷所述文件是否已下載完全;續傳處理模塊407,當所述歷史判斷模塊判斷已下載過該文件且未下載完全,則獲取所述文件中未成功下載的數據塊編號;下載模塊408,用于根據續傳處理單元408獲取的數據塊編號進行下載。本發明實施例方案可以達到如下技術效果當使用P2P直播傳輸媒體數據流的時候,可以利用已建立的P2P直播通道傳輸文件,而不需要重新創建一個P2P文件下載通道,從而達到節省資源的目的。通過以上的實施方式的描述,本領域的技術人員可以清楚地了解到本發明可借助軟件加必需的硬件平臺的方式來實現,當然也可以全部通過硬件來實施,但很多情況下前者是更佳的實施方式。基于這樣的理解,本發明的技術方案對
背景技術:
做出貢獻的全部或者部分可以以軟件產品的形式體現出來,該計算機軟件產品可以存儲在存儲介質中,如ROM/RAM、磁碟、光盤等,包括若干指令用以使得一臺計算機設備(可以是個人計算機,服務器,法。以上所述僅為本發明的較佳實施例而已,并不用以限制本發明,凡在本發明的精神和原則之內所作的任何修改、等同替換和改進等,均應包含在本發明的保護范圍之內。權利要求1、一種利用P2P直播通道下載文件的方法,其特征在于,包括如下步驟從直播通道接收P2P層的數據包;判斷所接收的數據包是否為用于下載文件的數據類型,若是,則創建臨時文件;接收數據塊,將所接收的數據塊寫入所述臨時文件;判斷是否接收所要下載文件的全部數據塊,若是則結束本流程,否則轉至所述接收數據塊的步驟。2、根據權利要求1所述的方法,其特征在于,所述創建臨時文件的步驟還包括記錄所述數據頭中的數據塊開始編號和結束編號;所述判斷是否接收到所要下載文件的全部數據塊包括每下載成功一個數據塊,將該數據塊編號標識為已收到;判斷是否所述數據塊開始編號至結束編號范圍內的所有數據塊均標識為已收到,若是,則表示成功接收到所要下載文件的全部數據塊。3、根據權利要求2所述的方法,其特征在于,所述創建臨時文件的步驟還包括記錄所述數據包中的驗證碼;則所述判斷已接收所要下載文件的全部數據塊之后,進一步包括使用所記載的驗證碼驗證所下載的文件,驗證成功則結束該文件的下載。4、根據權利要求1所述的方法,其特征在于,所述創建臨時文件之前,進一步包括判斷是否曾經下載過所述文件且未下載完全,若是,則獲取所述文件中未成功下載的數據塊編號,再轉至所述接收數據塊的步驟;否則,執行所述創建臨時文件的步驟。5、根據權利要求4所述的方法,其特征在于,所述判斷是否曾經下載過所述文件且未下載完全之前,進一步包括判斷是否已成功下載過所述文件,若是,則轉至所述從直播通道接收P2P層的數據包的步驟。6、根據權利要求5所述的方法,其特征在于,所述轉至所述從直播通道接收P2P層的數據包的步驟之前,進一步包括設定定時器,當定時器超時,則轉至所述從直播通道接收P2P層的數據包的步驟。7、根據權利要求6所述的方法,其特征在于,所述設定定時器包括將所述文件的最近需要下載的數據塊編號減去當前接收的數據塊編號,將所得的結果乘以下載單個數據塊所需時間,將乘積作為所述定時器的時長。8、根據權利要求1至7任一項所述的方法,其特征在于,所述在直播通道發送P2P層的數據包之前,該方法進一步包括設置所述文件的數據塊起始編號和結束編號以及數據類型標識,文件驗證碼等封裝為數據頭,將文件分成數據塊,并將所述數據頭和對應數據塊組成的數據包發往P2P層的直播通道。9、根據權利要求8所述的方法,其特征在于,所述將文件分成數據塊為將文件分成大小為lk字節至4k字節的數據塊。10、一種利用P2P直播通道下載文件的裝置,包括用于建立直播通道的模塊,其特征在于,還包括接收單元,用于從直播通道接收P2P層的數據包;類型識別單元,用于判斷所述接收單元所接收的數據包的類型;下載單元,用于當所述類型識別單元識別的數據包類型為用于下載文件的數據類型,則創建臨時文件,將接收單元所接收的數據包的數據塊寫入所述臨時文件,并判斷是否接收所述要下載文件的全部數據塊,若是則完成對該文件的下載。11、根據權利要求10所述的裝置,其特征在于,所述下載單元進一步包括數據分片管理模塊,用于記錄文件的各個數據塊是否下載成功,若文件的所有數據塊均下載成功,則指示該文件下載成功。12、根據權利要求10或11所述的裝置,其特征在于,所述下載單元進一步包括歷史判斷模塊,用于判斷是否已經下載過所要下載的文件,若是,則進一步判斷所述文件是否已下載完全;續傳處理模塊,當所述歷史判斷模塊判斷已下載過該文件且未下載完全,則獲取所述文件中最近的未成功下載的數據塊編號;下載模塊,用于根據續傳處理單元獲取的數據塊編號進行數據塊下載。全文摘要本發明公開了一種利用P2P直播通道下載文件的方法,包括如下步驟從直播通道接收P2P層的數據包;判斷所接收的數據包是否為用于下載文件的數據類型,若是,則創建臨時文件;接收數據塊,將所接收的數據塊寫入所述臨時文件;判斷是否接收所要下載文件的全部數據塊,若是則結束本流程,否則轉至所述接收數據塊的步驟。本發明還公開了利用P2P直播通道下載文件的裝置。本發明方案可以實現在已使用P2P直播傳輸媒體數據流的情況下,可以利用已建立的P2P直播通道傳輸文件,而不需要重新創建一個P2P文件下載通道,從而達到節省資源的目的。文檔編號H04L29/08GK101188622SQ20071016069公開日2008年5月28日申請日期2007年12月29日優先權日2007年12月29日發明者劉一蘭申請人:騰訊科技(深圳)有限公司