• / 11
  • 下載費用:30 金幣  

程序更新的方法、用于程序更新的客戶端及系統.pdf

摘要
申請專利號:

CN201510919386.0

申請日:

2015.12.11

公開號:

CN105320554A

公開日:

2016.02.10

當前法律狀態:

實審

有效性:

審中

法律詳情: 實質審查的生效IPC(主分類):G06F 9/445申請日:20151211|||公開
IPC分類號: G06F9/445 主分類號: G06F9/445
申請人: 網易(杭州)網絡有限公司
發明人: 林鎮澤; 劉海楊
地址: 310052浙江省杭州市濱江區長河街道網商路599號4幢7層
優先權:
專利代理機構: 北京律智知識產權代理有限公司11438 代理人: 姜燕; 王衛忠
PDF完整版下載: PDF下載
法律狀態
申請(專利)號:

CN201510919386.0

授權公告號:

|||

法律狀態公告日:

2016.03.09|||2016.02.10

法律狀態類型:

實質審查的生效|||公開

摘要

本公開提供了一種程序更新的方法、用于程序更新的客戶端及系統,其中程序更新的方法包括:在所述移動設備的本地的可寫目錄下創建補丁目錄;從服務器下載補丁文件,并將所述補丁文件存儲安裝于所述補丁目錄中,其中所述補丁目錄不同于所述程序的安裝目錄,且啟動所述程序時優先使用所述補丁目錄中的補丁文件。本公開通過在客戶端本地的可寫目錄下創建補丁目錄,啟動程序時優先加載補丁目錄下的補丁文件,如果補丁目錄下有更新或修改的文件則先加載更新或修改的文件,之后再加載安裝目錄下的文件,以達到非替換式更新文件的目的,從而可以通過不安裝程序包就能實現程序更新,可以大大減少程序更新所帶來的流量和時間上的消耗。

權利要求書

1.一種程序更新的方法,用于對移動設備上的程序進行增量更新,其特
征在于,包括以下步驟:
在所述移動設備的本地的可寫目錄下創建補丁目錄;
從服務器下載補丁文件,并將所述補丁文件存儲安裝于所述補丁目錄中,
其中所述補丁目錄不同于所述程序的安裝目錄,且啟動所述程序時優先
使用所述補丁目錄中的補丁文件。
2.根據權利要求1所述的方法,其特征在于,所述從服務器下載補丁文
件的步驟包括:
將所述補丁目錄中所有文件的MD5與補丁列表中所有文件的MD5進行
對比,獲取與從所述服務器下載的MD5不一致的文件或者存在于所述補丁
列表中但不存在于所述補丁目錄中的文件作為補丁文件。
3.根據權利要求2所述的方法,其特征在于,所述補丁列表為通過對新
版本程序與舊版本程序的所有文件進行單獨對比得到,且所述補丁列表中包
含修改或者新增的文件的MD5。
4.根據權利要求2所述的方法,其特征在于,從所述服務器下載所述補
丁文件之后還包括:
判斷所述補丁目錄中已下載的文件的MD5是否與所述補丁列表中文件
的MD5一致,如果不一致,則重新下載MD5不一致的文件。
5.根據權利要求4所述的方法,其特征在于,所述方法還包括:
當所述補丁目錄中已下載的文件的MD5與所述補丁列表中文件的MD5
一致時,更新程序版本號。
6.一種用于程序更新的客戶端,其特征在于,包括:
創建模塊,用于在移動設備本地的可寫目錄下創建補丁目錄;
下載模塊,用于從服務器下載補丁文件,并將所述補丁文件安裝于所述
補丁目錄中;
加載模塊,用于所述客戶端啟動程序時優先使用所述補丁目錄下的補丁
文件,其中所述補丁目錄不同于所述程序的安裝目錄。
7.根據權利要求6所述的客戶端,其特征在于,所述客戶端還包括:
對比模塊,用于將所述補丁目錄中所有文件的MD5與補丁列表中所有
文件的MD5進行對比,獲取與從所述服務器下載的MD5不一致的文件或者
存在于所述補丁列表中但不存在于所述補丁目錄中的文件作為補丁文件,其
中所述補丁列表為通過對比舊版程序與新版程序的所有文件得到。
8.根據權利要求7所述的客戶端,其特征在于,所述客戶端還包括:
判斷模塊,用于判斷所述補丁目錄中已下載的文件的MD5是否與所述
補丁列表中文件的MD5一致,如果不一致,則再轉至下載模塊,重新下載
MD5不一致的文件。
9.根據權利要求8所述的客戶端,其特征在于,所述客戶端還包括:
版本號更新模塊,用于當所述判斷模塊判斷出所述補丁目錄中已下載的
文件的MD5與所述補丁列表中文件的MD5一致時,更新程序版本號。
10.一種用于程序更新的系統,其特征在于,包括服務器和權利要求6-9
中任一項所述的客戶端,所述服務器通過對比舊版程序與新版程序的所有文
件得到補丁列表,且所述補丁列表中包含修改或新增的文件的MD5。

說明書

程序更新的方法、用于程序更新的客戶端及系統

技術領域

本公開涉及計算機網絡技術領域,尤其涉及程序更新的方法、用于程序
更新的客戶端及系統。

背景技術

近幾年來,隨著智能手機的普及,移動平臺的游戲發展迅速,成為各大
游戲廠商的必爭之地。4G網絡的普及以及城市中大量的WIFI熱點覆蓋,更
加方便越來越多的用戶使用手機或平板等移動設備來代替PC
(PersonalComputer,個人計算機)進行網游等娛樂。

移動平臺龐大的用戶量吸引了大量的游戲廠商,要在如此激烈的競爭中
勝出游戲廠商需要頻繁更新游戲內容、修復游戲存在的問題,以便增加新用
戶還有保留舊用戶。因此,移動平臺的網絡游戲的更新速度很快,如何讓游
戲更新的體驗更好,也是眾多游戲廠商面臨的一個問題。網絡游戲一般使用
增量更新的方案來進行更新的,即根據最新版本和當前版本的對比,只下載
需要更新的文件,修改本地的對應文件,實現游戲的更新。這樣可以盡量減
少的下載,以提高游戲更新的速度,達到更好的用戶體驗。

但是由于移動平臺的系統相對比較封閉,很多移動平臺系統的程序文件
都安裝在一個不可寫的目錄,例如現在流行的IOS和Android系統都是把程
序文件保存在一個特殊的目錄,游戲程序只能讀取這些文件內容,而無法修
改。因此,在移動平臺上不能通過覆蓋或修改安裝目錄下的文件來進行游戲
更新。

發明內容

為克服相關技術中存在的問題,本公開提供一種程序更新的方法、用于
程序更新的客戶端及系統,以解決現有技術中在移動平臺因安裝目錄不可寫
導致不能通過覆蓋或修改安裝目錄下的文件來進行程序更新的技術問題。

根據本公開實施例的第一方面,提供一種程序更新的方法,用于對移動
設備上的程序進行增量更新,包括以下步驟:

在所述移動設備的本地的可寫目錄下創建補丁目錄;

從服務器下載補丁文件,并將所述補丁文件存儲安裝于所述補丁目錄中,

其中所述補丁目錄不同于所述程序的安裝目錄,且啟動所述程序時優先
使用所述補丁目錄中的補丁文件。

根據本公開的另一實施方式,所述從服務器下載補丁文件的步驟包括:

將所述補丁目錄中所有文件的MD5與補丁列表中所有文件的MD5進行
對比,獲取與從所述服務器下載的MD5不一致的文件或者存在于所述補丁
列表中但不存在于所述補丁目錄中的文件作為補丁文件。

根據本公開的另一實施方式,所述補丁列表為通過對新版本程序與舊版
本程序的所有文件進行單獨對比得到,且所述補丁列表中包含修改或者新增
的文件的MD5。

根據本公開的另一實施方式,從所述服務器下載所述補丁文件之后還包
括:

判斷所述補丁目錄中已下載的文件的MD5是否與所述補丁列表中文件
的MD5一致,如果不一致,則重新下載MD5不一致的文件。

根據本公開的另一實施方式,所述方法還包括:

當判斷所述補丁目錄中已下載的文件的MD5與所述補丁列表中文件的
MD5一致時,更新程序版本號。

根據本公開實施例的第二方面,提供一種用于程序更新的客戶端,包括:

創建模塊,用于在移動設備本地的可寫目錄下創建補丁目錄;

下載模塊,用于從服務器下載補丁文件,并將所述補丁文件安裝于所述
補丁目錄中;

加載模塊,用于所述客戶端啟動程序時優先使用所述補丁目錄下的補丁
文件,其中所述補丁目錄不同于所述程序的安裝目錄。

根據本公開的另一實施方式,所述客戶端還包括:

對比模塊,用于將所述補丁目錄中所有文件的MD5與補丁列表中所有
文件的MD5進行對比,獲取與從所述服務器下載的MD5不一致的文件或者
存在于所述補丁列表中但不存在于所述補丁目錄中的文件作為補丁文件,其
中所述補丁列表為通過對比舊版程序與新版程序的所有文件得到。

根據本公開的另一實施方式,所述客戶端還包括:

判斷模塊,用于判斷所述補丁目錄中已下載的文件的MD5是否與所述
補丁列表中文件的MD5一致,如果不一致,則再轉至下載模塊,重新下載
MD5不一致的文件。

根據本公開的另一實施方式,所述客戶端還包括:

版本號更新模塊,用于當所述判斷模塊判斷所述補丁目錄中已下載的文
件的MD5與所述補丁列表中文件的MD5一致時,更新程序版本號。

根據本公開實施例的第三方面,提供一種用于程序更新的系統,包括服
務器和以上所述的客戶端,所述服務器通過對比舊版程序與新版程序的所有
文件得到補丁列表,且所述補丁列表中包含修改或新增的文件的MD5。

由上述技術方案可知,本公開的有益效果在于:雖然傳統技術中客戶端
啟動程序時不允許直接修改安裝目錄下的文件內容,但是本公開通過在客戶
端本地的可寫目錄下創建補丁目錄,改變傳統技術中只能加載安裝目錄下文
件的方式,在客戶端啟動程序時優先加載補丁目錄下的補丁文件,如果補丁
目錄下有更新或修改的文件則先加載更新或修改的文件,之后再加載安裝目
錄下的文件,以達到非替換式更新文件的目的,從而可以通過不安裝程序包
就能實現程序更新,可以大大減少程序更新所帶來的流量和時間上的消耗。

應當理解的是,以上的一般描述和后文的細節描述僅是示例性和解釋性
的,并不能限制本公開。

附圖說明

通過結合附圖考慮以下對本公開的優選實施例的詳細說明,本公開的各
種目標、特征和優點將變得更加顯而易見。附圖僅為本公開的示范性圖解,
并非一定是按比例繪制。在附圖中,同樣的附圖標記始終表示相同或類似的
部件。

圖1為相關實施例中在PC上更新程序的流程圖。

圖2為本公開實施例一中提供的一種程序更新的方法的步驟流程圖。

圖3為本公開實施例一中步驟S20中從服務器下載補丁文件的步驟流
程。

圖4為本公開實施例一中修改讀取文件順序后的流程圖。

圖5為本公開實施例二中提供的一種用于程序更新的客戶端的組成框
圖。

具體實施方式

體現本公開特征與優點的典型實施例將在以下的說明中詳細敘述。應理
解的是,本公開能夠在不同的實施例上具有各種的變化,其皆不脫離本公開
的范圍,且其中的說明及附圖在本質上是當作說明之用,而非用以限制本公
開。

本公開所描述的特征、結構或特性可以以任何合適的方式結合在一個或
更多實施方式中。在下面的描述中,提供許多具體細節從而給出對本公開的
實施方式的充分理解。然而,本領域技術人員將意識到,可以實踐本公開的
技術方案而沒有所述特定細節中的一個或更多,或者可以采用其它的方法、
組件、材料等。在其它情況下,不詳細示出或描述公知結構、材料或者操作
以避免模糊本公開的各方面。

下面將參照附圖示例性地給出本公開的一些實施例。應當理解,參照的
實施例并不限制本公開的范圍。也就是說,本說明書中舉出的任何實例都不
是限制性的,而是僅僅是示例性的。

傳統的PC平臺上的程序一般都是通過增量更新的方式來進行更新的,
每次更新只修改需要更新的文件。本發明的實施例中的程序均以網絡游戲為
例,但是并不因此限定僅為網絡游戲,還可以是除網絡游戲以外其他類型的
客戶端軟件。以網絡游戲為例,無論是游戲的設定方式還是游戲中人物或者
道具的更新,更新周期比較短,更新較為頻繁,每次更新只修改更新的部分
可以大大減少更新過程所耗費的時間以及數據資源(如流量)。以網絡游戲
為例,圖1是相關實施例示出的一種在PC上進行更新的流程圖,如圖1所
示,包括以下步驟。

步驟S01:把每個客戶端版本對應更新信息上傳到游戲的更新服務器上。

步驟S02:游戲客戶端程序在啟動時,根據當前客戶端上的程序版本號
來訪問游戲的更新服務器,判斷是否需要更新。如果需要更新,則獲取需要
更新的文件信息。這些文件信息可以是一個個完整的文件或是這些文件的修
改內容。若是完整文件則直接覆蓋對應的文件即可。若下載的是文件的修改
內容,則需要在本地的基礎上修改。

鑒于現有技術中移動系統較為封閉,上述方法并不能直接應用在移動平
臺的客戶端上程序的更新,本公開提供一種用于移動平臺客戶端程序更新的
方法、用于程序更新的客戶端及系統,并在后續實施例一至三中進行詳細說
明。

實施例一

本實施例中提供了一種程序更新的方法,用于對移動設備上的程序進行
增量更新,圖2是根據本實施例示出的程序更新的方法的步驟流程圖,包括
以下步驟:

步驟S10:在移動設備本地的可寫目錄下創建補丁目錄。

步驟S20:從服務器下載補丁文件,并將補丁文件安裝于補丁目錄中。

在移動設備上啟動程序時,優先加載補丁目錄下的補丁文件,補丁目錄
是不同于程序的安裝目錄的可寫目錄,加載補丁文件之后再加載安裝目錄下
的文件。

通過上述的步驟流程,首先在本地創建可寫的補丁目錄,補丁目錄中可
以存儲并安裝補丁文件,由于補丁文件和安裝目錄下的文件都存在于本地,
還需要在加載文件時通過修改讀取文件的流程來更改加載文件的順序,即優
先加載補丁目錄下的補丁文件,之后再加載安裝目錄下的文件,完成更新,
或者在補丁目錄下沒有新的補丁文件時直接加載安裝目錄下的文件,從而可
以在移動平臺的客戶端上也可以實現增量更新。

步驟S20中從服務器下載補丁文件的步驟流程如圖3所示,包括以下步
驟:

步驟S21:將補丁目錄中所有文件的MD5與補丁列表中所有文件的MD5
進行對比,獲取與從服務器下載的MD5不一致的文件或者存在于補丁列表
中但不存在于所述補丁目錄中的文件作為補丁文件。

在客戶端啟動時計算補丁目錄中所有文件的MD5,根據客戶端本地的程
序版本號與補丁列表中程序版本號的比較,從服務器下載最新的補丁列表中
的文件。將本地計算得到的MD5和最新版的補丁列表中的MD5進行對比,
將MD5不一致或者新增的文件從服務器下載到本地的補丁目錄中。補丁目
錄是客戶端上預先設定的一個可寫目錄,用于存儲從服務器下載的補丁文件,
下載時,如果文件已存在于補丁目錄中,則直接覆蓋舊文件。

補丁文件除了包括MD5不一致的文件,還可以包括新增的文件,也就
是補丁目錄中的文件,即文件名存在于服務器的補丁列表中,但是不存在于
當前的補丁目錄中的文件。

步驟S22:判斷補丁目錄中已下載的文件的MD5是否與補丁列表中文件
的MD5一致,如果不一致,則重新下載MD5不一致的文件。其中補丁列表
為通過對新版本程序與舊版本程序的所有文件進行單獨對比得到,且補丁列
表中包含修改或者新增的文件的MD5。

在網絡正常的情況下,補丁目錄中下載的文件直接覆蓋原來的文件,覆
蓋之后本地補丁文件的MD5與補丁列表中文件的MD5一致,但在某些異常
的網絡環境或者移動設備的存儲有問題的情況下,可能下載后存放于補丁目
錄中的個別補丁文件是不正確的,導致本地補丁文件的MD5和補丁列表中
文件的MD5不一致,因此在網絡不穩定或者存儲出現異常的情況下會出現
本地補丁文件的MD5和補丁列表中文件的MD5不一致的現象。如果某個文
件的MD5是不正確的,也就是在文件是損壞的情況下,此時客戶端進行重
新加載資源,就會出現加載失敗,從而可能出現導致客戶端不能正常啟動的
情況。

基于上述,本實施例在下載補丁文件之后還需要對補丁目錄中所存儲補
丁文件的MD5與服務器上補丁列表中文件的MD5是否一致進行判斷,如果
一致,就可以進行下一步驟,如果不一致就要重新下載,直到所有文件的
MD5都一致時才結束下載流程,確保最終本次補丁文件的MD5與補丁列表
文件的MD5一致,避免因為網絡問題和移動設備的存儲問題導致文件錯誤,
從而導致客戶端損壞。

步驟S23:當判斷補丁目錄中已下載的文件的MD5與補丁列表中文件的
MD5一致時,更新程序版本號。客戶端程序的版本號存在于更新的文件中,
客戶端下載補丁文件并完成更新后程序版本號也相應地被修改為最新的程序
版本號,以防下次啟動又重復更新。而且在下載完所需的補丁文件并更新版
本號之后,通過參照對比,根據本地程序的版本號選擇從服務器中的哪個補
丁列表。

以常見的游戲程序為例,雖然IOS和Android等移動平臺的操作系統的
安裝目錄下的文件都是只讀屬性,不能對其進行修改或覆蓋,也就是不允許
將游戲程序直接修改安裝目錄下的文件內容,但是會提供另外一些可以讀寫
的目錄。在這些可以讀寫的目錄下,應用程序能夠寫入和讀取文件內容。因
此,只要把更新的內容下載到這些可以讀寫的目錄里就能實現和PC平臺類
似的更新。

雖然在可寫目錄下能夠下載游戲程序的更新文件,但要讓程序能正確地
讀取這些更新文件,還需要對讀取文件的流程做修改。因為這些更新文件并
不在程序的安裝目錄下,如果程序直接從安裝目錄下讀取文件,則還是得到
更新前的文件內容。因此,還需要修改游戲程序讀文件資源的流程。

修改前,讀取文件的流程是游戲程序直接從安裝目錄下讀取文件。本實
施例若要使游戲程序能正確讀取文件,需要把讀取文件資源的流程進行修改,
圖4是本實施例中提供的程序更新方法在修改讀取文件資源順序后的流程
圖,如圖4所示,游戲程序先從補丁目錄(可寫目錄下)讀取文件,若補丁
目錄下沒有補丁文件,則再到安裝目錄下讀取。因為補丁目錄下的補丁文件
是更新后的,這樣就能保證游戲程序能讀到最新的補丁文件。而且如果補丁
文件沒有更新,游戲程序也能從安裝目錄下讀取到原來的文件。

通過上述對讀取文件流程的修改,更新補丁文件后,游戲客戶端可以在
不重啟的情況下重新加載本地文件(依次加載補丁目錄和安裝目錄下的文
件)。如果文件僅存在于游戲安裝目錄中,則表示文件沒有更新,直接加載
安裝目錄下的文件即可;如果文件A存在于可寫的補丁目錄中,同時又存在
于程序的安裝目錄中,則優先加載補丁目錄中的文件A,之后再加載安裝目
錄下的文件A,從而達到了文件更新的目的。

綜上所述,本實施例的有益效果在于:雖然傳統技術中客戶端啟動程序
時不允許直接修改安裝目錄下的文件內容,但是本公開通過在客戶端本地的
可寫目錄下創建補丁目錄,改變傳統技術中只能加載安裝目錄下文件的方式,
在客戶端啟動程序時優先加載補丁目錄下的文件,如果補丁目錄下有更新或
修改的文件則先加載更新或修改的文件,之后再加載安裝目錄下的文件,以
達到非替換式更新文件的目的,從而可以通過不安裝程序包就能實現程序更
新,可以大大減少程序更新所帶來的流量和時間上的消耗。

另一方面,采用本實施例的更新方法,客戶端每次下載完補丁文件后不
需要重啟,同樣節約了程序啟動時間,讓用戶能有更好的游戲體驗,避免了
因為更新導致用戶體驗不良而帶來的使用量流失。

實施例二

本實施例提供了一種用于程序更新的客戶端,包括:創建模塊100、下
載模塊200、加載模塊300、對比模塊400、判斷模塊500和版本號更新模塊
600。

圖5是本實施例提供的用于程序更新的客戶端的組成框圖,其中創建模
塊100用于在移動設備本地的可寫目錄下創建補丁目錄,其中補丁目錄是不
同于程序的安裝目錄的可寫目錄。下載模塊200用于從服務器下載補丁文件,
并將補丁文件安裝于補丁目錄中。加載模塊300用于客戶端啟動程序時優先
加載補丁目錄下的文件,加載補丁目錄下的補丁文件之后再加載安裝目錄下
的文件。

客戶端中還可以包括對比模塊400和判斷模塊500。

對比模塊400用于將補丁目錄中所有文件的MD5與補丁列表中所有文
件的MD5進行對比,獲取與從服務器下載的MD5不一致的文件或者存在于
補丁列表中但不存在于補丁目錄中的文件作為補丁文件。

補丁列表為通過對比舊版程序與新版程序的所有文件得到,將修改或者
新增文件的文件名及文件內容的MD5寫入補丁列表中,將補丁列表以及補
丁列表包含的文件保存在以當前新的程序版本號命名的文件夾中,并將該文
件夾上傳到服務器以供客戶端下載。通過單獨每個文件的對比得到的補丁列
表,確保客戶端只需要下載發生變化的文件,從而節約了網絡流量和下載時
間。

判斷模塊500用于判斷補丁目錄中已下載的文件的MD5是否與補丁列
表中文件的MD5一致,如果不一致,則再轉至下載模塊200,重新下載MD5
不一致的文件,直到一致為止,以避免因為網絡問題和移動設備的存儲問題
導致文件錯誤,從而導致客戶端損壞。

客戶端中還可以包括版本號更新模塊600,用于當判斷模塊500判斷補
丁目錄中已下載的文件的MD5與補丁列表中文件的MD5一致時,更新程序
版本號,以防下次啟動又重復更新。

關于上述實施例中的裝置,其中各個模塊執行操作的具體方式已經在有
關該方法的實施例中進行了詳細描述,此處將不做詳細闡述說明。

綜上所述,本實施例的有益效果在于:通過創建模塊在客戶端本地的可
寫目錄下創建補丁目錄,在客戶端啟動程序時優先加載補丁目錄下的補丁文
件,如果補丁目錄下有更新或修改的文件則先加載更新或修改的文件,之后
再加載安裝目錄下的文件,以達到非替換式更新文件的目的,從而可以通過
不安裝程序包就能實現程序更新,可以大大減少程序更新所帶來的流量和時
間上的消耗。

實施例三

基于上述實施例二,本實施例提供了一種用于程序更新的系統,包括服
務器和實施例二中的客戶端,客戶端的組成以及各部分的功能參見實施例二。

服務器通過對比舊版程序與新版程序的所有文件得到補丁列表,且補丁
列表中包含修改或新增的文件的MD5。服務器將修改或者新增文件的文件名
及文件內容的MD5寫入補丁列表中,將補丁列表以及補丁列表包含的文件
保存在以當前新的程序版本號命名的文件夾中,并將該文件夾上傳到服務器
以供客戶端下載。通過單獨每個文件的對比得到的補丁列表,確保客戶端只
需要下載發生變化的文件,從而節約了網絡流量和下載時間。

基于上述,本實施例能夠實現同實施例二相同的技術效果,此處不再贅
述。

本領域技術人員在考慮說明書及實踐這里公開的發明后,將容易想到本
公開的其它實施方案。本申請旨在涵蓋本公開的任何變型、用途或者適應性
變化,這些變型、用途或者適應性變化遵循本公開的一般性原理并包括本公
開未公開的本技術領域中的公知常識或慣用技術手段。說明書和實施例僅被
視為示例性的,本公開的真正范圍和精神由下面的權利要求指出。

應當理解的是,本公開并不局限于上面已經描述并在附圖中示出的精確
結構,并且可以在不脫離其范圍進行各種修改和改變。本公開的范圍僅由所
附的權利要求來限制。

關 鍵 詞:
程序 更新 方法 用于 客戶端 系統
  專利查詢網所有資源均是用戶自行上傳分享,僅供網友學習交流,未經上傳用戶書面授權,請勿作他用。
關于本文
本文標題:程序更新的方法、用于程序更新的客戶端及系統.pdf
鏈接地址:http://www.rgyfuv.icu/p-6409788.html
關于我們 - 網站聲明 - 網站地圖 - 資源地圖 - 友情鏈接 - 網站客服客服 - 聯系我們

[email protected] 2017-2018 zhuanlichaxun.net網站版權所有
經營許可證編號:粵ICP備17046363號-1 
 


收起
展開
山东11选5中奖结果走势图