一種資源下載方法和裝置的制造方法
【技術領域】
[0001]本發(fā)明涉及計算機網絡領域,特別涉及一種資源下載方法和裝置。
【背景技術】
[0002]在開發(fā)0S2和Window程序時,正式引入了資源的概念。如Borland的C++,Delphi把會話框分為兩部分:一部分是程序的邏輯,另一部分是對話框及其上面的控件的大小、位置、字體等信息。這些信息就是資源,它在程序中就是不變的常量。早期的資源文件一般都被嵌入到程序中,我們可以使用一些工具在dll或exe中讀取這些資源。
[0003]隨著計算機技術的飛速發(fā)展,資源的類型也越來越豐富,例如圖片、音頻、視頻等等。從軟件國際化(Globalizat1n/Localizat1n)的角度,可以把資源分成兩大類:一類是需要隨使用者所用的語言而改變的資源,如軟件的中文版、英文版等;另一類是不需要隨使用者所用的語言而改變的資源,如:音頻、圖像等。從資源出現(xiàn)的方式來看,資源可以分為三大類:第一類是嵌入在程序集里面;第二類是以單獨文件的形式出現(xiàn)在本地的存儲介質上(通常是硬盤);第三類是以單獨的文件存在在異地的存儲介質上,如網絡硬盤等。
[0004]然而,在資源下載過程中,經常會因為資源的提供方提供的種子不足,或者網速的變慢,致使資源下載的速度變慢,例如在迅雷客戶端下載某一部電影的過程中,資源數目為198,然而,只有50的資源是可用并有效的,致使資源下載的速度只有198K/S,而正常的下載速度一般超過lM/s以上。
【發(fā)明內容】
[0005]基于此,為解決上述現(xiàn)有技術的問題,提供了一種資源下載的方法和裝置。
[0006]—種資源下載方法,所述方法包括:
將預設代碼注入資源下載客戶端的下載進程中;
通過所述進程中的所述預設代碼獲取資源共享方提供的片源數據;
若判斷所述片源數據與正在下載的片源數據的數據類型相同,并且所述片源的ed2k地址與正在下載的片源的ed2k地址相同,則,
開啟資源通道并向所述資源共享方所述的第三方服務器發(fā)送資源獲取請求,使所述第三方服務器通過所述資源通道傳輸包含片源數據的資源。
[0007]在其中一個實施例中,所述將預設代碼注入資源下載客戶端的下載進程中,所述方法包括:
遠程調用所述進程中的用于加載動態(tài)鏈接庫的系統(tǒng)調用函數以根據所述路徑加載所述動態(tài)鏈接庫;
遠程調用所述進程的用于操作動態(tài)鏈接庫的系統(tǒng)調用函數獲取所述動態(tài)鏈接庫中用于處理下載資源的函數的函數地址;
根據獲取的函數地址執(zhí)行相應的函數。
[0008]在其中另一個實施例中,所述預設代碼通過輔助應用注入所述下載進程中,所述方法還包括:
通過所述進程接收所述第三方服務器反饋的資源信息;
通過所述輔助應用獲取來自所述進程的所述資源信息;
展示所述資源信息,和/或,根據獲取的資源信息進行統(tǒng)計,得到統(tǒng)計結果。
[0009]在其中另一個實施例中,所述預設代碼通過輔助應用被注入所述資源下載客戶端的進程中,所述方法還包括:
通過所述輔助應用獲取所述資源下載客戶端的下載數據;
根據所述下載數據判斷是否需要開啟告訴通道加速,和/或開啟離線下載加速;
將所述判斷結果傳遞給所述進程,使所述進程調用用于開啟高速加速通道的函數進行加速下載,或者,調用用于開啟離線加速通道的函數進行離線加速下載。
[0010]在其中另一個實施例中,所述方法還包括:
所述輔助應用搜索所述資源下載客戶端中是否存在其他的進程;
判斷所述進程是否為無用進程;
若是,則關閉所述無用進程以釋放所述無用進程的內存。
[0011 ] —種資源下載裝置,所述裝置包括:
注入模塊,用于將預設代碼注入資源下載客戶端的下載進程中;
第一獲取模塊,用于通過所述進程中的所述預設代碼獲取資源共享方提供的片源數據;
第一判斷模塊,用于當判斷所述片源數據與正在下載的片源數據的數據類型相同,并且所述片源的ed2k地址與正在下載的片源的ed2k地址相同,則,
開啟模塊,用于開啟資源通道并向所述資源共享方所述的第三方服務器發(fā)送資源獲取請求,使所述第三方服務器通過所述資源通道傳輸包含片源數據的資源。
[0012]在其中一個實施例中,所述注入模塊包括:第一調用單元,用于遠程調用所述進程中的用于加載動態(tài)鏈接庫的系統(tǒng)調用函數以根據所述路徑加載所述動態(tài)鏈接庫;
第二調用單元,用于遠程調用所述進程的用于操作動態(tài)鏈接庫的系統(tǒng)調用函數獲取所述動態(tài)鏈接庫中;
處理單元,用于處理下載資源的函數的函數地址;
執(zhí)行單元,用于根據獲取的函數地址執(zhí)行相應的函數
在其中另一個實施例中,所述預設代碼通過輔助應用注入所述下載進程中,所述裝置還包括:
接收模塊,用于通過所述進程接收所述第三方服務器反饋的資源信息;
第二獲取模塊,用于通過所述輔助應用獲取來自所述進程的所述資源信息;
展示模塊,用于展示所述資源信息,和/或,根據獲取的資源信息進行統(tǒng)計,得到統(tǒng)計結果O
[0013]在其中另一個實施例中,所述預設代碼通過輔助應用被注入所述資源下載客戶端的進程中,所述裝置還包括:
第三獲取模塊,通過所述輔助應用獲取所述資源下載客戶端的下載數據;
第二判斷模塊,用于根據所述下載數據判斷是否需要開啟高速通道加速,和/或開啟離線下載加速; 調用模塊,用于將所述判斷結果傳遞給所述進程,使所述進程調用用于開啟高速加速通道的函數進行加速下載,或者,調用用于開啟離線加速通道的函數進行離線加速下載。
[0014]在其中另一個實施例中,所述裝置還包括:
搜索模塊,用于根據所述輔助應用搜索所述資源下載客戶端中是否存在其他的進程; 第三判斷模塊,用于判斷所述進程是否為無用進程;
關閉模塊,用于當判斷結果為是,則關閉所述無用進程以釋放所述無用進程的內存。
[0015]有益效果:
本發(fā)明的一種資源下載方法,所述方法包括:將預設代碼注入資源下載客戶端的下載進程中;通過所述進程中的所述預設代碼獲取資源共享方提供的片源數據;若判斷所述片源數據與正在下載的片源數據的數據類型相同,并且所述片源的ed2k地址與正在下載的片源的ed2k地址相同,則開啟資源通道并向所述資源共享方所述的第三方服務器發(fā)送資源獲取請求,使所述第三方服務器通過所述資源通道傳輸包含片源數據的資源。通過上述方法,加快資源下載的速度。
【附圖說明】
[0016]圖1是本發(fā)明的一種資源下載方法的方法流程圖;
圖2是本發(fā)明的一種資源下載裝置的模塊框圖。
【具體實施方式】
[0017]為了使本發(fā)明的目的、技術方案及優(yōu)點更加清楚明白,以下結合附圖及實施例,對本發(fā)明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0018]如圖1所示,在一個實施例中,提供了一種資源下載方法,所述方法包括:
SlOl:將預設代碼注入資源下載客戶端的下載進程中;
S102:通過所述進程中的所述預設代碼獲取資源共享方提供的片源數據;
S103:若判斷所述片源數據與正在下載的片源數據的數據類型相同,并且所述片源的ed2k地址與正在下載的片源的ed2k地址相同,則,
S104:開啟資源通道并向所述資源共享方所述的第三方服務器發(fā)送資源獲取請求,使所述第三方服務器通過所述資源通道傳輸包含片源數據的資源。
[0019]在一個實施例中,提供了一種用于資源下載的終端,該終端設置有資源下載客戶端,該終端包括通過系統(tǒng)總線連接的處理器、非易失性存儲介質、內存儲器、網絡接口、顯示屏以及輸入裝置。其中處理器具有計算功能和控制終端工作的功能,該處理器被配置為執(zhí)行一種下載資源處理方法。非易失性存儲介質包括磁存儲介質、光存儲介質和閃存式存儲介質中的至少一種,非易失性存儲介質存儲有操作系統(tǒng)和下載資源處理裝置。該下載資源處理裝置用于實現(xiàn)一種下載資源處理方法。網絡接口用于連接到網絡與社交應用服務器或者輔助應用服務器通信。顯示屏包括液晶顯示屏、柔性顯示屏和電子墨水顯示屏中的至少一種。輸入裝置包括物理按鈕、軌跡球、觸控板以及與顯示屏重疊的觸控層中的至少一種,其中觸控層與顯示屏組合形成觸控屏。
[0020]具體地,預設代碼是預先編寫的用于實現(xiàn)下載資源處理方法的代碼,可以采用C語言或者C++語言編寫。注入是指在進程中加入可執(zhí)行的代碼的過程,注入可以是遠程注入,是指在一個進程中通過調用遠程注入系統(tǒng)函數在另一個進程中加入可執(zhí)行的代碼的過程。在不同的操作系統(tǒng)下可使用不同的遠程注入系統(tǒng)函數實現(xiàn)遠程注入,比如在Android(安卓)操作系統(tǒng)下可使用遠程注入系統(tǒng)函數PtraceO實現(xiàn)遠程注入,在Solaris操作系統(tǒng)下可使用遠程注入系統(tǒng)函數dtrace()實現(xiàn)遠程注入,在Mac操作系統(tǒng)下可使用遠程注入系統(tǒng)函數dtrussO實現(xiàn)遠程注入。社交應用通常具有聯(lián)系人查找功能以及即時通信功能,還可以具有UGC(User Generated Content,用戶生成內容)分享功能以及UGC評論功能。
[0021]在一個實施例中,步驟101具體包括如下步驟:
步驟a,遠程調用社交應用的進程的用于分配存儲空間的系統(tǒng)調用函數以分配存儲空間,并在存儲空間中寫入動態(tài)鏈接庫的路徑。
[0022]具體地,終端可通過輔助應用獲取社交應用的進程標識(PID),從而通過該進程標識連接到社交應用的進程。終端通過輔助應用獲取進程的寄存器值并保存,以便完成注入后恢復進程原有的狀態(tài)。終端通過輔助應用獲取進程的用于分配存儲空間的系統(tǒng)調用函數(_ap)的調用地址、用于加載動態(tài)鏈接庫的系統(tǒng)調用函數(dlopen)的調用地址以及用于操作動態(tài)鏈接庫的系統(tǒng)調用函數(dlsym)的調用地址。從而根據進程的用于分配存儲空間的系統(tǒng)調