欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

游戲服務器的測試方法、客戶端、服務器及系統(tǒng)與流程

文檔序號:12363400閱讀:647來源:國知局
游戲服務器的測試方法、客戶端、服務器及系統(tǒng)與流程

本發(fā)明涉及計算機系統(tǒng)的測試領域,尤其涉及一種游戲服務器的測試方法、客戶端、服務器及系統(tǒng)。



背景技術:

模糊測試是一種通過向目標系統(tǒng)提供非預期的輸入并監(jiān)視異常結(jié)果的方法,常常用于檢測軟件安全漏洞。通常,模糊測試包括如下的過程:自動或半自動的生成隨機數(shù)據(jù)輸入到一個程序中,然后監(jiān)視程序異常,如崩潰、斷言失敗等,得到測試結(jié)果并存儲和顯示。

在現(xiàn)有的對于游戲服務器的模糊測試中,由于無法獲得游戲協(xié)議結(jié)構,導致模糊測試只適用于自主研發(fā)的游戲應用程序,限制了模糊測試的應用范圍。此外,模糊測試采用對游戲協(xié)議數(shù)據(jù)進行完全隨機的填充方式,由于游戲協(xié)議中包含多個異常值,游戲服務器需要對這多個異常值進行檢查才能做出響應,并且,當游戲服務器宕機后,無法從多個異常值中確定使得游戲服務器宕機的那個異常值,從而導致測試效率較低。



技術實現(xiàn)要素:

有鑒于此,本發(fā)明提供了一種游戲服務器的測試方法、客戶端、服務器及系統(tǒng),能夠提升測試效率和準確度。

本發(fā)明的技術方案是這樣實現(xiàn)的:

本發(fā)明提供了一種游戲服務器的測試方法,測試服務器查找得到游戲客戶端所基于的協(xié)議的函數(shù),并根據(jù)函數(shù)獲得協(xié)議的協(xié)議基礎結(jié)構;測試客戶端每次進行測試時,執(zhí)行如下處理:從測試服務器拉取協(xié)議基礎結(jié)構,根據(jù) 協(xié)議基礎結(jié)構生成合法游戲協(xié)議包;對所生成的合法游戲協(xié)議包進行異常值填充,得到異常游戲協(xié)議包;及,通過向游戲服務器發(fā)送異常游戲協(xié)議包和合法游戲協(xié)議包,測試得到游戲服務器的狀態(tài)。

本發(fā)明還提供了一種測試客戶端,包括:拉取模塊、生成模塊、異常值填充模塊、發(fā)送模塊、接收模塊、判斷模塊;其中,測試服務器查找得到游戲客戶端所基于的協(xié)議的函數(shù),并根據(jù)函數(shù)獲得協(xié)議的協(xié)議基礎結(jié)構;每次進行測試時:拉取模塊,用于從測試服務器拉取協(xié)議基礎結(jié)構;生成模塊,用于根據(jù)拉取模塊拉取的協(xié)議基礎結(jié)構生成合法游戲協(xié)議包;異常值填充模塊,用于對生成模塊生成的合法游戲協(xié)議包進行異常值填充,得到異常游戲協(xié)議包;發(fā)送模塊,用于向游戲服務器發(fā)送異常游戲協(xié)議包和合法游戲協(xié)議包;接收模塊,用于接收游戲服務器的反饋;及,判斷模塊,用于根據(jù)接收模塊接收的反饋,判斷得到游戲服務器的狀態(tài)。

本發(fā)明又提供了一種測試服務器,包括:查找模塊,用于查找得到游戲客戶端所基于的協(xié)議的函數(shù);解析模塊,用于根據(jù)查找模塊得到的函數(shù),解析獲得協(xié)議的協(xié)議基礎結(jié)構;存儲模塊,用于存儲解析模塊得到的協(xié)議基礎結(jié)構;其中,在每次測試時,測試客戶端從測試服務器拉取協(xié)議基礎結(jié)構,根據(jù)協(xié)議基礎結(jié)構生成合法游戲協(xié)議包,對合法游戲協(xié)議包進行異常值填充,得到異常游戲協(xié)議包,并通過向游戲服務器發(fā)送異常游戲協(xié)議包和合法游戲協(xié)議包,測試得到游戲服務器的狀態(tài)。

本發(fā)明還提供了一種測試系統(tǒng),包括:游戲服務器、測試客戶端和測試服務器;其中,測試服務器,用于查找得到游戲客戶端所基于的協(xié)議的函數(shù),并根據(jù)函數(shù)獲得協(xié)議的協(xié)議基礎結(jié)構;測試客戶端,用于,每次進行測試時,從測試服務器拉取協(xié)議基礎結(jié)構,根據(jù)協(xié)議基礎結(jié)構生成合法游戲協(xié)議包,對所生成的合法游戲協(xié)議包進行異常值填充,得到異常游戲協(xié)議包,并通過向游戲服務器發(fā)送異常游戲協(xié)議包和合法游戲協(xié)議包,測試得到游戲服務器的狀態(tài)。

與現(xiàn)有技術相比,本發(fā)明提供的測試方法不僅適用于自主研發(fā)的游戲程序,也適用于所代理的第三方的游戲程序,能夠避免傳統(tǒng)測試中隨機填充多個異常值導致測試效率低的問題,更快地發(fā)現(xiàn)游戲服務器程序漏洞的速度,提升測試效率和準確度。

附圖說明

圖1為本發(fā)明實施例所涉及的實施環(huán)境示意圖;

圖2為依據(jù)本發(fā)明一實施例的測試方法的流程示意圖;

圖3為依據(jù)本發(fā)明一實施例的測試方法的協(xié)議基礎結(jié)構的示意圖;

圖4為依據(jù)本發(fā)明另一實施例的測試方法的流程示意圖;

圖5為依據(jù)本發(fā)明一實施例的測試方法的注入界面示意圖;

圖6為依據(jù)本發(fā)明一實施例的測試方法的原生協(xié)議數(shù)據(jù)的內(nèi)容示意圖;

圖7為依據(jù)本發(fā)明一實施例的測試方法的異常值配置文件的示意圖;

圖8為依據(jù)本發(fā)明一實施例的測試方法的時序圖;

圖9為依據(jù)本發(fā)明又一實施例的測試方法的流程示意圖;

圖10a為依據(jù)本發(fā)明一實施例的測試方法的用戶界面示意圖;

圖10b為依據(jù)本發(fā)明一實施例的測試方法的測試執(zhí)行界面示意圖;

圖10c為依據(jù)本發(fā)明一實施例的測試方法的測試結(jié)果界面示意圖;

圖11為依據(jù)本發(fā)明一實施例的測試客戶端的裝置結(jié)構示意圖;

圖12為依據(jù)本發(fā)明又一實施例的測試客戶端的裝置結(jié)構示意圖;

圖13為依據(jù)本發(fā)明一實施例的測試客戶端的設備結(jié)構示意圖;

圖14為依據(jù)本發(fā)明一實施例的測試服務器的裝置結(jié)構示意圖;

圖15為依據(jù)本發(fā)明一實施例的測試服務器的設備結(jié)構示意圖;

圖16為依據(jù)本發(fā)明一實施例的測試系統(tǒng)的結(jié)構示意圖。

具體實施方式

下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領域普通技術人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。

圖1為本發(fā)明實施例所涉及的實施環(huán)境示意圖。參見圖1,該測試系統(tǒng)包括:游戲服務器101、游戲客戶端102、測試客戶端103和測試服務器104。其中,游戲服務器101和游戲客戶端102進行數(shù)據(jù)交互,為用戶提供網(wǎng)絡游戲等服務。游戲客戶端102提供圖形用戶界面以便用戶進行輸入操作,同時播放各種場景、動作與特效等。游戲服務器101的功能包括實現(xiàn)與游戲客戶端102之間的通信、驗證、數(shù)據(jù)處理等。

此外,測試客戶端103和測試服務器104進行數(shù)據(jù)交互,完成對游戲服務器的測試。其中,測試客戶端103以注入的方式將自己的程序注入到游戲客戶端102中,使得測試客戶端103能夠訪問游戲客戶端102的所有內(nèi)存空間,便于后續(xù)直接調(diào)用游戲客戶端的相關函數(shù),完成發(fā)送游戲協(xié)議包等測試工作。測試服務器104用于存儲相關的協(xié)議數(shù)據(jù)結(jié)構、協(xié)議數(shù)據(jù)以及測試結(jié)果等。

本發(fā)明中,測試服務器104可以通過網(wǎng)絡和測試客戶端103進行通信,也可以和測試客戶端103進行本地通信。

上述游戲客戶端可以是單獨的游戲播放和輸入設備,也可以是任一具有數(shù)據(jù)計算處理功能的設備,包括但不限于臺式計算機、智能手機、掌上電腦、平板電腦等。

圖2為依據(jù)本發(fā)明一實施例的測試方法的流程示意圖。參見圖2,該方法包括:

步驟201、測試服務器查找得到游戲客戶端所基于的協(xié)議的函數(shù),并根據(jù)該函數(shù)獲得協(xié)議的協(xié)議基礎結(jié)構。

在一實施例中,測試服務器通過對游戲客戶端所基于的協(xié)議的函數(shù)進行解析,得到協(xié)議基礎結(jié)構,并進行存儲。

例如,可以從游戲客戶端所基于的協(xié)議函數(shù)的參數(shù)(例如,函數(shù)的原型)中得到協(xié)議原始結(jié)構,然后測試服務器用腳本以遞歸的方式將協(xié)議原始結(jié)構解析為協(xié)議基礎結(jié)構。

在一實施例中,上述游戲客戶端所基于的協(xié)議可以為傳輸控制協(xié)議(TCP)或者用戶數(shù)據(jù)報協(xié)議(UDP)。游戲客戶端根據(jù)所基于的協(xié)議定義了一個或多個函數(shù)以完成相應的游戲功能。

圖3為依據(jù)本發(fā)明一實施例的測試方法的協(xié)議基礎結(jié)構的示意圖,其中包括協(xié)議函數(shù)的標識ID、協(xié)議函數(shù)名稱以及解析后的協(xié)議基礎結(jié)構。每個協(xié)議基礎結(jié)構包含一個或多個基礎數(shù)據(jù)結(jié)構。例如,對于協(xié)議函數(shù)ID為1時,其對應的協(xié)議基礎結(jié)構包含兩個基礎數(shù)據(jù)結(jié)構:布爾型bool和整數(shù)型int。

測試服務器將協(xié)議函數(shù)的標識ID、協(xié)議函數(shù)名稱以及解析后的協(xié)議基礎結(jié)構保存到數(shù)據(jù)庫中,以便測試時為測試客戶端提供該協(xié)議基礎結(jié)構。

測試客戶端每次進行測試時,執(zhí)行如下步驟202、203和204。

步驟202、測試客戶端從測試服務器拉取協(xié)議基礎結(jié)構,根據(jù)協(xié)議基礎結(jié)構生成合法游戲協(xié)議包。

在一實施例中,測試客戶端從測試服務器拉取解析后得到的協(xié)議基礎結(jié)構,在內(nèi)存中為該協(xié)議基礎結(jié)構構造相應的緩沖區(qū)(buffer),即在內(nèi)存中構造存放該協(xié)議基礎結(jié)構的一塊連續(xù)內(nèi)存數(shù)據(jù)塊。

進一步地,測試客戶端從測試服務器拉取原生協(xié)議數(shù)據(jù),使用原生協(xié)議數(shù)據(jù)對所構造的協(xié)議基礎結(jié)構對應的緩沖區(qū)進行數(shù)值填充,從而得到了合法游戲協(xié)議包。

步驟203、測試客戶端對所生成的合法游戲協(xié)議包進行異常值填充,得到異常游戲協(xié)議包。

步驟204、測試客戶端通過向游戲服務器發(fā)送異常游戲協(xié)議包和合法游 戲協(xié)議包,測試得到游戲服務器的狀態(tài)。

游戲服務器在收到異常游戲協(xié)議包后,對其進行處理。若游戲服務器處理完該異常游戲協(xié)議包后,仍能正常工作,但不做任何響應,那么測試客戶端將無法獲知該游戲服務器狀態(tài)是否異常。因此,測試客戶端向游戲服務器發(fā)送異常游戲協(xié)議包之外,還發(fā)送合法游戲協(xié)議包,若游戲服務器處理完異常游戲協(xié)議包后狀態(tài)為正常,其在收到合法游戲協(xié)議包后,會向測試客戶端反饋對應于該合法游戲協(xié)議包的確認響應,從而使得測試客戶端獲知游戲服務器的狀態(tài)。

在本發(fā)明實施例中,通過測試服務器查找得到游戲客戶端所基于的協(xié)議的函數(shù),并獲得協(xié)議基礎結(jié)構,使得該測試方法不僅適用于自主研發(fā)的游戲程序(一般能夠獲得游戲協(xié)議源碼),也適用于所代理的第三方的游戲程序(通常無法獲得游戲協(xié)議源碼);通過測試客戶端從測試服務器拉取協(xié)議基礎結(jié)構,根據(jù)協(xié)議基礎結(jié)構生成合法游戲協(xié)議包,對所生成的合法游戲協(xié)議包進行異常值填充,得到異常游戲協(xié)議包,通過向游戲服務器發(fā)送異常游戲協(xié)議包和合法游戲協(xié)議包,測試得到游戲服務器的狀態(tài),能夠避免傳統(tǒng)測試中隨機填充多個異常值導致測試效率低的問題,更快地發(fā)現(xiàn)游戲服務器程序漏洞的速度,減少測試時間,提升測試效率。

圖4為依據(jù)本發(fā)明另一實施例的測試方法的流程示意圖;

步驟401、測試客戶端將自身注入到游戲客戶端中。

此處的注入是指將測試客戶端的程序加載到游戲客戶端的內(nèi)存中,使得測試客戶端能夠訪問游戲客戶端的所有內(nèi)存空間,便于后續(xù)執(zhí)行測試工作時能夠直接獲取到游戲客戶端的相關函數(shù)。

圖5為依據(jù)本發(fā)明一實施例的測試方法的注入界面500的示意圖。參見圖5,在注入界面500中,在啟動注入程序時,將在啟動配置窗口501中根據(jù)用戶的輸入完成相關的配置。具體如下:

首先,用戶登陸游戲,然后打開注入程序,顯示注入界面500和啟動配 置窗口501。用戶在方框502中輸入或者選擇游戲進程名,同時在方框503中顯示用戶所選擇的游戲進程名的當前版本,這樣就確定了要注入到的游戲客戶端對應的游戲。在方框504中用戶輸入需要注入的測試客戶端的程序的動態(tài)鏈接庫(DLL)文件路徑,或者通過點擊方框505在本地選擇測試客戶端的程序的DLL文件路徑,這樣也確定了需要注入的測試客戶端的程序。用戶點擊方框506后啟動注入程序,從而完成了測試客戶端到游戲客戶端的注入過程。

步驟402、測試客戶端收集由注入到的游戲客戶端產(chǎn)生的原生協(xié)議數(shù)據(jù),將原生協(xié)議數(shù)據(jù)上傳給測試服務器。這里,已注入的測試客戶端會自動收集游戲客戶端運行中產(chǎn)生的原生協(xié)議數(shù)據(jù)。

在執(zhí)行完步驟401后,測試客戶端能夠訪問游戲客戶端的所有內(nèi)存空間,可以收集由游戲客戶端產(chǎn)生的原生協(xié)議數(shù)據(jù)。該原生協(xié)議數(shù)據(jù)可以為基于TCP或者UDP的數(shù)據(jù)。該原生協(xié)議數(shù)據(jù)可以包括原生協(xié)議請求數(shù)據(jù),即游戲客戶端希望從游戲服務器處理的請求數(shù)據(jù),例如,拉取好友信息、創(chuàng)建房間、發(fā)送聊天消息等。

圖6為依據(jù)本發(fā)明一實施例的測試方法的原生協(xié)議數(shù)據(jù)的內(nèi)容示意圖,其中包括該原生協(xié)議數(shù)據(jù)對應的協(xié)議函數(shù)名稱、基礎數(shù)據(jù)結(jié)構及對應的數(shù)據(jù)類型和取值。圖6所示的原生協(xié)議數(shù)據(jù)是請求游戲服務器處理攻擊的事務,包括攻擊目標序號標識、攻擊者序號標識、攻擊結(jié)果、攻擊類型等基礎數(shù)據(jù)結(jié)構。

在具體應用時,一個游戲包括很多條協(xié)議,測試客戶端可以收集在日常功能測試中觸發(fā)的原生協(xié)議,將這些原生協(xié)議數(shù)據(jù)上傳給測試服務器,并存儲在數(shù)據(jù)庫中。然后,在執(zhí)行游戲服務器測試時,測試客戶端再從測試服務器中拉取這些原生協(xié)議數(shù)據(jù)。

步驟403、測試客戶端獲得所注入到的游戲客戶端的公共發(fā)包函數(shù)。

在執(zhí)行完步驟401后,測試客戶端能夠訪問游戲客戶端的所有內(nèi)存空間,可以獲得游戲客戶端的公共發(fā)包函數(shù)。該公共發(fā)包函數(shù)是指游戲客戶端發(fā)送 所有的游戲協(xié)議都會調(diào)用的函數(shù)。

在一實施例中,游戲客戶端的公共發(fā)包函數(shù)可以通過如下方式獲得:利用調(diào)試工具通過游戲客戶端的相關文件逆向找到游戲客戶端的公共發(fā)包函數(shù)。例如,利用程序動態(tài)調(diào)試(OD)工具對游戲客戶端的程序數(shù)據(jù)庫(PDB)文件或者協(xié)議的可擴展標示語言(XML)文件進行逆向分析,從而找到游戲客戶端公共發(fā)包函數(shù)。其中,PDB文件保存著調(diào)試和項目狀態(tài)信息,使用這些信息可以對程序的調(diào)試配置進行增量鏈接。

步驟404、測試服務器根據(jù)游戲客戶端的公共發(fā)包函數(shù)查找得到游戲客戶端所有的協(xié)議函數(shù),獲得協(xié)議基礎結(jié)構。

根據(jù)在步驟403中獲得游戲客戶端的公共發(fā)包函數(shù)的方法,測試服務器也可以事先得到該游戲客戶端的公共發(fā)包函數(shù),進而查找得到游戲客戶端所基于的協(xié)議的所有函數(shù)。

在一實施例中,測試服務器可以利用分析工具查看游戲客戶端的公共發(fā)包函數(shù)的調(diào)用關系,得到游戲客戶端所基于的協(xié)議的函數(shù)。

例如,測試服務器通過調(diào)用反匯編靜態(tài)分析(IDA)工具,利用IDA工具中的應用程序接口(API),查看游戲客戶端的公共發(fā)包函數(shù)的調(diào)用關系,從而找到游戲客戶端所基于的協(xié)議的所有函數(shù)。

步驟405、測試客戶端從測試服務器拉取協(xié)議基礎結(jié)構,在內(nèi)存中構造相應的緩沖區(qū)。

步驟406、測試客戶端從測試服務器拉取原生協(xié)議數(shù)據(jù),使用原生協(xié)議數(shù)據(jù)對所構造的協(xié)議基礎結(jié)構對應的緩沖區(qū)進行數(shù)值填充,得到合法游戲協(xié)議包。

在執(zhí)行完步驟402后,測試服務器已經(jīng)存儲了原生協(xié)議數(shù)據(jù)。那么,測試客戶端從測試服務器拉取原生協(xié)議數(shù)據(jù),根據(jù)原生協(xié)議數(shù)據(jù)里的協(xié)議函數(shù)名稱找到對應的協(xié)議基礎結(jié)構,然后對所構造的協(xié)議基礎結(jié)構對應的緩沖區(qū)進行初始化,即將原生協(xié)議數(shù)據(jù)填充到緩沖區(qū)中,就得到了包含相應協(xié)議基 礎結(jié)構的合法游戲協(xié)議包。

例如,圖3中協(xié)議函數(shù)ID為2時的協(xié)議函數(shù)名稱與圖6中示出的協(xié)議函數(shù)名稱是相同的,即為“RequestProjectHit”,那么測試客戶端將圖6中基礎數(shù)據(jù)結(jié)構的取值填充到圖3中協(xié)議函數(shù)ID為2的協(xié)議基礎結(jié)構對應的緩沖區(qū)中,從而得到了協(xié)議函數(shù)為“RequestProjectHit”的合法游戲協(xié)議包。

步驟407、測試客戶端對所生成的合法游戲協(xié)議包進行異常值填充,得到異常游戲協(xié)議包。

測試客戶端以基礎數(shù)據(jù)結(jié)構為單位讀取異常值配置文件中的異常值,對合法游戲協(xié)議包進行異常值填充,得到異常游戲協(xié)議包。

在一實施例中,在測試客戶端中預先存儲異常值配置文件。該異常值配置文件可以由專業(yè)測試人員根據(jù)測試經(jīng)驗制定,例如,針對不同的數(shù)值類型,主要包含了測試程序最容易出問題的邊界值、異常值等。通過步驟401中將測試客戶端注入到游戲客戶端的過程,完成該異常值配置文件的加載。

圖7為依據(jù)本發(fā)明一實施例的測試方法的異常值配置文件的示意圖。參見圖7,針對每個基礎數(shù)據(jù)類型列出了所對應的異常值的各種可能數(shù)值。例如,對于整數(shù)型(int)(對應圖7中基礎數(shù)據(jù)類型ID為1),有異常值0、-1(代表負值)、2147483647(代表邊界值)、-2147483649(代表邊界值)等。對于字符串(string)類型(對應圖7中基礎數(shù)據(jù)類型ID為10),所對應的異常值的數(shù)值包括特殊字符、字符串長度、轉(zhuǎn)譯符號、結(jié)構化查詢語言(SQL)等。

在進行異常值的填充時,對于每個合法游戲協(xié)議包的協(xié)議基礎結(jié)構所包含的一個或多個基礎數(shù)據(jù)結(jié)構(如圖3所示),測試客戶端以該基礎數(shù)據(jù)結(jié)構為單位,根據(jù)該基礎數(shù)據(jù)結(jié)構對應的基礎數(shù)據(jù)類型讀取異常值配置文件的異常值,然后將讀取的異常值填充到基礎數(shù)據(jù)結(jié)構中,得到一個異常游戲協(xié)議包。然后,逐個讀取異常值依次填充到每個基礎數(shù)據(jù)結(jié)構中,以生成多個異常游戲協(xié)議包。這樣保證每次發(fā)出的異常游戲協(xié)議包中僅包含一個異常值, 游戲服務器在接收到該異常游戲協(xié)議包后,可以僅針對該一個異常值進行處理。

圖6中所示的第一個基礎數(shù)據(jù)結(jié)構“數(shù)據(jù)長度”為short類型,圖7中第四個基礎數(shù)據(jù)類型為short類型,那么從其對應的異常值中讀取一個異常值,作為圖6中所示的第一個基礎數(shù)據(jù)結(jié)構“數(shù)據(jù)長度”的取值,從而完成了異常值的填充,將合法游戲協(xié)議包轉(zhuǎn)換成異常游戲協(xié)議包。

步驟408、測試客戶端調(diào)用游戲客戶端的公共發(fā)包函數(shù),向游戲服務器發(fā)送異常游戲協(xié)議包和合法游戲協(xié)議包,測試得到游戲服務器的狀態(tài)。

通過步驟403的逆向分析找到了游戲客戶端的公共發(fā)包函數(shù),也就確定了公共發(fā)包函數(shù)的地址,同時保存此時數(shù)據(jù)寄存器的值。例如,該數(shù)據(jù)寄存器為ECX寄存器,是一種重復前綴指令和循環(huán)指令的內(nèi)定計數(shù)器,在調(diào)用公共發(fā)包函數(shù)時該ECX寄存器中保存該公共發(fā)包函數(shù)所在對象的地址。因此,所保存的ECX寄存器的值即為游戲客戶端的公共發(fā)包函數(shù)所屬的對象的指針。

這樣,既確定了游戲客戶端的公共發(fā)包函數(shù)地址,也找到了游戲客戶端負責處理發(fā)包的對象,就可以調(diào)用游戲客戶端的公共發(fā)包函數(shù)了。具體在調(diào)用時,可以將該公共發(fā)包函數(shù)中表示發(fā)包內(nèi)容的參數(shù)指針指向步驟405中已經(jīng)構造好的游戲協(xié)議包所在的內(nèi)存緩沖區(qū),就可以按照游戲客戶端發(fā)包的正常流程,對異常游戲協(xié)議包和合法游戲協(xié)議包進行數(shù)據(jù)加工處理、數(shù)據(jù)加密等操作,然后發(fā)送給游戲服務器。

游戲服務器在接收到異常游戲協(xié)議包后,對異常游戲協(xié)議包中的一個異常值進行處理。若測試客戶端在預定時間間隔內(nèi)收到游戲服務器反饋的對應于合法游戲協(xié)議包的確認響應,則判斷游戲服務器的狀態(tài)為正常;否則,若測試客戶端在預定時間間隔內(nèi)沒有收到任何響應,表明游戲服務器在處理異常游戲協(xié)議包后出現(xiàn)錯誤或者宕機,則判斷游戲服務器的狀態(tài)為異常,此時測試客戶端能夠根據(jù)發(fā)送的異常協(xié)議游戲包,確定對應的協(xié)議函數(shù)以及基礎 數(shù)據(jù)結(jié)構,分別作為異常協(xié)議和異常參數(shù)記錄在測試結(jié)果中。

通過本發(fā)明的實施例,將測試客戶端注入到游戲客戶端中,使得測試客戶端能夠訪問游戲客戶端的所有內(nèi)存空間,收集由所注入到的游戲客戶端產(chǎn)生的原生協(xié)議數(shù)據(jù),并且方便調(diào)用游戲客戶端的公共發(fā)包函數(shù)用于異常游戲協(xié)議包和合法游戲協(xié)議包的發(fā)送,使得測試人員不需要在執(zhí)行測試之前實現(xiàn)模擬游戲登陸流程中登錄請求、拉取人物信息、任務信息、地圖信息等等一系列步驟,解決了模糊測試中在執(zhí)行測試之前所需的繁瑣工作,提供了針對游戲服務器的一鍵自動化測試方案,降低了測試的時間成本和人工成本,提升了測試效率。

此外,在生成異常游戲協(xié)議包時,每個異常游戲協(xié)議包僅且只有一個異常值,游戲服務器在接收到該異常游戲協(xié)議包后,僅需要對該一個異常值進行處理,能夠有效減少測試時間,同時在發(fā)現(xiàn)游戲服務器狀態(tài)異常時,能夠精準定位導致游戲服務器異常狀態(tài)的異常函數(shù)以及異常參數(shù)。

圖8為依據(jù)本發(fā)明一實施例的測試方法的時序圖。如上所述,由于游戲服務器收到異常游戲協(xié)議包后不一定會給游戲客戶端反饋響應,可以通過在測試客戶端中添加監(jiān)測線程,不間斷地向服務器發(fā)送合法游戲協(xié)議包以請求游戲服務器反饋響應。參照圖8,包括如下步驟:

步驟801、測試客戶端的發(fā)送線程向游戲服務器發(fā)送第一異常游戲協(xié)議包。

步驟802、測試客戶端的監(jiān)測線程向游戲服務器發(fā)送合法游戲協(xié)議包。

在步驟801發(fā)送第一異常游戲協(xié)議包后,在第一預定時間間隔后測試客戶端的監(jiān)測線程向游戲服務器發(fā)送合法游戲協(xié)議包。例如,該第一預定時間間隔可以為50ms。

在具體應用中,該合法游戲協(xié)議包可以為游戲心跳包,一種專門用于客戶端和服務器之間檢測狀態(tài)的數(shù)據(jù)包,其中不包含異常值。例如,遵循TCP協(xié)議中的心跳包機制,具有一定的心跳頻率(即預定周期)。

步驟803、游戲服務器運行狀態(tài)正常,向測試客戶端反饋確認響應。

在步驟801游戲服務器收到了第一異常游戲協(xié)議包后,對其進行處理。若游戲服務器處理完該異常游戲協(xié)議包后,仍能正常工作,比如沒有出現(xiàn)任何錯誤或者沒有宕機,那么該游戲服務器在收到合法游戲協(xié)議包后,會向測試客戶端反饋對應于該合法游戲協(xié)議包的確認響應。

例如,在具體應用中,游戲客戶端向游戲服務器發(fā)送合法游戲協(xié)議包,請求購買物品,服務器返回確認響應,表示購買成功,游戲客戶端收到表示購買成功的確認響應后,把請求購買的物品提供給游戲玩家使用。

步驟804、測試客戶端在接收到游戲服務器反饋的確認響應后,判斷該游戲服務器的狀態(tài)為正常。

步驟805、測試客戶端的監(jiān)測線程通知測試客戶端的發(fā)送線程,向游戲服務器發(fā)送下一個異常游戲協(xié)議包。

步驟806、測試客戶端的發(fā)送線程向游戲服務器發(fā)送第二異常游戲協(xié)議包。

測試客戶端的發(fā)送線程在收到測試客戶端的監(jiān)測線程發(fā)送的通知后,可以立即向游戲服務器發(fā)送第二異常游戲協(xié)議包。

其中,該第二異常游戲協(xié)議包和步驟801中發(fā)送的第一異常游戲協(xié)議包不同。例如,在具體應用時,第一異常游戲協(xié)議包可以包括登錄協(xié)議;第二異常游戲協(xié)議包可以包括購買道具協(xié)議。并且,第一異常游戲協(xié)議包和第二異常游戲協(xié)議包所包含的異常值不同。

步驟807、測試客戶端的監(jiān)測線程向游戲服務器發(fā)送合法游戲協(xié)議包。

其中,設置第二預定時間間隔,測試客戶端的監(jiān)測線程可以在該第二預定時間間隔內(nèi)按照預定周期依次發(fā)送多個合法游戲協(xié)議包,每次發(fā)送的合法游戲協(xié)議包可以是相同的。例如,該第二預定時間間隔可以為5s,該預定周期可以為50ms。

如圖8所示,在步驟807a向游戲服務器發(fā)送合法游戲協(xié)議包后,在預定 周期內(nèi),若沒有收到游戲服務器的任何反饋消息,那么按照該預定周期在步驟807b向游戲服務器繼續(xù)發(fā)送合法游戲協(xié)議包,依次不斷發(fā)送。

當然,測試客戶端的監(jiān)測線程可以在該預定時間間隔內(nèi)只發(fā)送一個合法游戲協(xié)議包,然后等待游戲服務器的反饋。

步驟808、若在預定時間間隔內(nèi)沒有收到游戲服務器的反饋,測試客戶端的監(jiān)測線程判斷游戲服務器狀態(tài)為異常,并將測試結(jié)果寫入測試日志。

其中,測試結(jié)果可以包括測試時間、服務器狀態(tài)、該異常游戲協(xié)議包所包含的異常協(xié)議和異常參數(shù)等。

步驟809、測試客戶端的監(jiān)測線程向測試客戶端的發(fā)送線程發(fā)送通知,告知游戲服務器狀態(tài)為異常。

步驟810、測試客戶端的監(jiān)測線程將測試日志上傳給測試服務器。

步驟811、測試服務器將接收到的測試日志進行存儲。

在本發(fā)明實施例中,通過在測試客戶端中添加監(jiān)測線程,在測試客戶端的發(fā)送線程發(fā)送異常游戲協(xié)議包后,能夠不間斷地向游戲服務器發(fā)送合法游戲協(xié)議包。通過能否接收到游戲服務器對合法游戲協(xié)議包做出的反饋能夠及時獲知游戲服務器的狀態(tài),從而有效定位游戲服務器是否出現(xiàn)異常,提高了測試方案發(fā)現(xiàn)問題的能力,提升測試效率。

圖9為依據(jù)本發(fā)明又一實施例的測試方法的流程示意圖。參見圖9,該方法包括如下步驟:

步驟900、提供用戶操作界面,并接收用戶輸入的操作。

在下面所述的步驟901至908中,通過步驟900提供的用戶操作界面,接收用戶輸入的操作,顯示測試過程和測試結(jié)果。

步驟901、將測試客戶端注入到游戲客戶端中。

此步驟和步驟401的描述相同,在此不再贅述。

步驟902、執(zhí)行游戲服務器測試。

圖10a為依據(jù)本發(fā)明一實施例的測試方法的用戶界面1010示意圖。如圖 10a所示,用戶可以點擊執(zhí)行測試按鈕1011,測試客戶端將自動執(zhí)行上述步驟405-408所述的操作,在此不再贅述。

此外,在圖10a中,方框1012顯示出測試服務器的歷史測試日志,包括收集測試結(jié)果的數(shù)目,上次測試的時間和結(jié)果等。

圖10b為依據(jù)本發(fā)明一實施例的測試方法的測試執(zhí)行界面1020示意圖。如圖10b所示,方框1021顯示正在執(zhí)行測試,方框1022顯示正在執(zhí)行的測試協(xié)議,即所發(fā)送的異常協(xié)議包所對應包含的協(xié)議函數(shù),方框1023顯示已執(zhí)行測試的數(shù)量以及此時的測試時間,同時提供按鈕1024暫停和按鈕1025取消。其中,發(fā)送一次異常游戲協(xié)議包,并測試得到游戲服務器的狀態(tài)被統(tǒng)計為一次測試。

步驟903、顯示測試結(jié)果,寫入測試日志,并將測試日志上傳給測試服務器進行存儲。

執(zhí)行完測試后,提供用戶界面,顯示測試的測試結(jié)果。測試結(jié)果可以包括測試時間、游戲服務器的狀態(tài)(正常或異常),所發(fā)送的異常游戲協(xié)議包所包含的異常協(xié)議和異常參數(shù)等測試結(jié)果記錄在測試日志中。

圖10c為依據(jù)本發(fā)明一實施例的測試方法的測試結(jié)果界面1030示意圖。如圖10c所示,在方框1037中顯示了測試結(jié)果的詳細信息。從中可以得知,導致服務器宕機的異常游戲協(xié)議包是依據(jù)異常協(xié)議SendMotionItemBuy,并且當“道具ID”這個異常參數(shù)的值等于-46982759(即在步驟407所填充的異常值)時,導致服務器宕機。

步驟904、查看歷史測試日志。

測試結(jié)束后,測試人員可以通過歷史測試日志查看近期的測試結(jié)果。如圖10c所示,在方框1031中顯示了歷史測試日志,包括測試時間1032和測試結(jié)果1033。

步驟905、查看是否測試出游戲服務器異常。若是,執(zhí)行步驟907;否則,執(zhí)行步驟906。

步驟906、顯示測試完成,游戲服務器狀態(tài)正常。

步驟907、選擇重新測試。

如圖10c所示,若測試人員希望進一步檢查某個異常測試結(jié)果,例如測試時間為10月15日11:30:13、測試結(jié)果為“服務器宕機”的測試結(jié)果,則點擊詳情1034,在方框1037中查看此時的異常協(xié)議和異常參數(shù)等。通過點擊按鈕1035,可以選擇重新測試。

在一實施例中,在執(zhí)行重新測試時,參照圖8,測試客戶端的監(jiān)測線程無需發(fā)送合法游戲協(xié)議包,可以只由測試客戶端的發(fā)送線程發(fā)送之前導致游戲服務器異常的那個異常游戲協(xié)議包,即第二異常游戲協(xié)議包,重新確認游戲服務器的狀態(tài)。

當然,用戶也可以選擇按鈕1036關閉此界面,不進行重新測試。

步驟908、顯示測試完成,發(fā)現(xiàn)游戲服務器異常。

通過選擇重新測試,測試人員再次確定游戲服務器異常,從而可以采取相關措施對游戲服務器進行修復。

在本發(fā)明實施例中,若通過測試得到游戲服務器狀態(tài)異常,給測試人員提供用戶界面,根據(jù)異常協(xié)議和異常參數(shù)等可以選擇重新進行測試,對游戲服務器的狀態(tài)進行再定位,重現(xiàn)異常情況,提供了精準監(jiān)測游戲服務器出現(xiàn)異常的功能,方便測試人員的操作,提升了測試效率。

圖11為依據(jù)本發(fā)明一實施例的測試客戶端1100的裝置結(jié)構示意圖,包括拉取模塊1110、生成模塊1120、異常值填充模塊1130、發(fā)送模塊1140、接收模塊1150以及判斷模塊1160;其中,測試服務器查找得到游戲客戶端所基于的協(xié)議的函數(shù),并根據(jù)函數(shù)獲得協(xié)議的協(xié)議基礎結(jié)構;

每次進行測試時:

拉取模塊1110,用于從測試服務器拉取協(xié)議基礎結(jié)構;其中,測試服務器查找得到游戲客戶端所基于的協(xié)議的函數(shù),并根據(jù)函數(shù)獲得協(xié)議的協(xié)議基礎結(jié)構;

生成模塊1120,用于根據(jù)拉取模塊1110拉取的協(xié)議基礎結(jié)構生成合法游戲協(xié)議包;

異常值填充模塊1130,用于對生成模塊1120生成的合法游戲協(xié)議包進行異常值填充,得到異常游戲協(xié)議包;

發(fā)送模塊1140,用于向游戲服務器發(fā)送異常游戲協(xié)議包和合法游戲協(xié)議包;

接收模塊1150,用于接收游戲服務器的反饋;及,

判斷模塊1160,用于根據(jù)接收模塊1150接收的反饋,判斷得到游戲服務器的狀態(tài)。

圖12為依據(jù)本發(fā)明又一實施例的測試客戶端1200的裝置結(jié)構示意圖,測試客戶端1200在圖11所示的測試客戶端1100的基礎之上,還包括:

注入模塊1210,用于將測試客戶端1100注入到游戲客戶端中;

收集模塊1220,用于收集由注入模塊1210注入到的游戲客戶端產(chǎn)生的原生協(xié)議數(shù)據(jù);

相應地,發(fā)送模塊1140,進一步用于將收集模塊1220收集的原生協(xié)議數(shù)據(jù)上傳給測試服務器;

拉取模塊1110,進一步用于從測試服務器拉取原生協(xié)議數(shù)據(jù);

生成模塊1120,用于根據(jù)拉取模塊1110拉取的原生協(xié)議數(shù)據(jù)對協(xié)議基礎結(jié)構進行填充,得到合法游戲協(xié)議包。

在一實施例中,圖12所示的測試客戶端1200還包括:

構造模塊1230,用于在內(nèi)存中為拉取模塊1110拉取的協(xié)議基礎結(jié)構構造相應的緩沖區(qū);

相應地,拉取模塊1110,進一步用于從測試服務器拉取原生協(xié)議數(shù)據(jù);

生成模塊1120,用于根據(jù)拉取模塊1110拉取的原生協(xié)議數(shù)據(jù)對構造模塊1230構造的緩沖區(qū)進行數(shù)值填充,得到合法游戲協(xié)議包。

在一實施例中,接收模塊1150,用于接收游戲服務器響應于接收到的合 法游戲協(xié)議包而發(fā)送的反饋;

判斷模塊1160,用于根據(jù)接收模塊1150接收的反饋,若在預定時間間隔內(nèi)收到游戲服務器反饋的對應于合法游戲協(xié)議包的確認響應,則判斷游戲服務器的狀態(tài)為正常,否則,判斷游戲服務器的狀態(tài)為異常。

在一實施例中,圖12所示的測試客戶端1200還包括:

界面模塊1240,用于提供用戶操作界面,并接收用戶輸入的操作;

注入模塊1210用于響應于用戶操作,確定游戲進程名和測試客戶端的文件路徑;根據(jù)游戲進程名和測試客戶端的文件路徑,將測試客戶端注入到游戲客戶端中。

在一實施例中,圖12所示的測試客戶端1200還包括:

界面模塊1240,用于提供用戶操作界面,并接收用戶輸入的操作;

重新測試模塊1250,用于若判斷模塊1160判斷游戲服務器的狀態(tài)為異常,響應于用戶操作,重新進行至少一次測試。

圖13為依據(jù)本發(fā)明一實施例的測試客戶端1300的設備結(jié)構示意圖。該測試客戶端1300可包括:處理器1310,存儲器1320,端口1330以及總線1340。處理器1310和存儲器1320通過總線1340互聯(lián)。處理器1310可通過端口1330接收和發(fā)送數(shù)據(jù)。其中,

處理器1310用于執(zhí)行存儲器1320存儲的機器可讀指令模塊。

存儲器1320存儲有處理器1310可執(zhí)行的機器可讀指令模塊。處理器1310可執(zhí)行的指令模塊包括:拉取模塊1321、生成模塊1322、異常值填充模塊1323、發(fā)送模塊1324、接收模塊1325和判斷模塊1326。其中,

拉取模塊1321被處理器1310執(zhí)行時可以為:從測試服務器拉取協(xié)議基礎結(jié)構;其中,測試服務器查找得到游戲客戶端所基于的協(xié)議的函數(shù),并根據(jù)函數(shù)獲得協(xié)議的協(xié)議基礎結(jié)構;

生成模塊1322被處理器1310執(zhí)行時可以為:根據(jù)拉取模塊1321拉取的協(xié)議基礎結(jié)構生成合法游戲協(xié)議包;

異常值填充模塊1323被處理器1310執(zhí)行時可以為:對生成模塊1322生成的合法游戲協(xié)議包進行異常值填充,得到異常游戲協(xié)議包;

發(fā)送模塊1324被處理器1310執(zhí)行時可以為:向游戲服務器發(fā)送異常游戲協(xié)議包和合法游戲協(xié)議包;

接收模塊1325被處理器1310執(zhí)行時可以為:接收游戲服務器的反饋;及,

判斷模塊1326被處理器1310執(zhí)行時可以為:根據(jù)接收模塊1325接收的反饋,判斷得到游戲服務器的狀態(tài)。

在一實施例中,存儲器1320存儲的處理器1310可執(zhí)行的指令模塊還包括:注入模塊1327、收集模塊1328、構造模塊1329、界面模塊1301和重新測試模塊1302。其中,

注入模塊1327被處理器1310執(zhí)行時可以為:將測試客戶端1300注入到游戲客戶端中;

收集模塊1328被處理器1310執(zhí)行時可以為:收集由注入模塊1327注入到的游戲客戶端產(chǎn)生的原生協(xié)議數(shù)據(jù);

構造模塊1329被處理器1310執(zhí)行時可以為:在內(nèi)存中為拉取模塊1321拉取的協(xié)議基礎結(jié)構構造相應的緩沖區(qū);

界面模塊1301被處理器1310執(zhí)行時可以為:提供用戶操作界面,并接收用戶輸入的操作;

重新測試模塊1302被處理器1310執(zhí)行時可以為:若判斷模塊1326判斷游戲服務器的狀態(tài)為異常,響應于用戶操作,重新進行至少一次測試。

由此可以看出,當存儲在存儲器1320中的指令模塊被處理器1310執(zhí)行時,可實現(xiàn)前述各個實施例中拉取模塊1321、生成模塊1322、異常值填充模塊1323、發(fā)送模塊1324、接收模塊1325、判斷模塊1326、注入模塊1327、收集模塊1328、構造模塊1329和重新測試模塊1301的各種功能。

圖14為依據(jù)本發(fā)明一實施例的測試服務器1400的裝置結(jié)構示意圖。測 試服務器1400包括:

查找模塊1410,用于查找得到游戲客戶端所基于的協(xié)議的函數(shù);

解析模塊1420,用于根據(jù)查找模塊1410得到的函數(shù),解析獲得協(xié)議的協(xié)議基礎結(jié)構;

存儲模塊1430,用于存儲解析模塊1420得到的協(xié)議基礎結(jié)構;

其中,在每次測試時,測試客戶端從測試服務器1400拉取協(xié)議基礎結(jié)構,根據(jù)協(xié)議基礎結(jié)構生成合法游戲協(xié)議包,對合法游戲協(xié)議包進行異常值填充,得到異常游戲協(xié)議包,并通過向游戲服務器發(fā)送異常游戲協(xié)議包和合法游戲協(xié)議包,測試得到游戲服務器的狀態(tài)。

在一實施例中,查找模塊1410用于利用分析工具查看游戲客戶端的公共發(fā)包函數(shù)的調(diào)用關系找到函數(shù)。

在一實施例中,存儲模塊1430進一步用于存儲游戲客戶端產(chǎn)生的原生協(xié)議數(shù)據(jù);

其中,測試客戶端從測試服務器1400拉取原生協(xié)議數(shù)據(jù),根據(jù)原生協(xié)議數(shù)據(jù)對協(xié)議基礎結(jié)構進行填充,得到合法游戲協(xié)議包。

上述裝置實施例中,各個模塊及單元實現(xiàn)自身功能的具體方法在方法實施例中均有描述,這里不再贅述。

另外,在本發(fā)明各個實施例中的各功能模塊可以集成在一個處理單元中,也可以是各個模塊單獨物理存在,也可以兩個或兩個以上模塊集成在一個單元中。上述集成的單元既可以采用硬件的形式實現(xiàn),也可以采用軟件功能單元的形式實現(xiàn)。

圖15為依據(jù)本發(fā)明一實施例的測試服務器1500的設備結(jié)構示意圖。該測試服務器1500可包括:處理器1510,存儲器1520,端口1530以及總線1540。處理器1510和存儲器1520通過總線1540互聯(lián)。處理器1510可通過端口1530接收和發(fā)送數(shù)據(jù)。其中,

處理器1510用于執(zhí)行存儲器1520存儲的機器可讀指令模塊。

存儲器1520存儲有處理器1510可執(zhí)行的機器可讀指令模塊。處理器1510可執(zhí)行的指令模塊包括:查找模塊1521、解析模塊1522和存儲模塊1523。其中,

查找模塊1521被處理器1510執(zhí)行時可以為:查找得到游戲客戶端所基于的協(xié)議的函數(shù);

解析模塊1522被處理器1510執(zhí)行時可以為:根據(jù)查找模塊1521得到的函數(shù),解析獲得協(xié)議的協(xié)議基礎結(jié)構;

存儲模塊1523被處理器1510執(zhí)行時可以為:存儲解析模塊1522得到的協(xié)議基礎結(jié)構;

其中,在每次測試時,測試客戶端從測試服務器1500拉取協(xié)議基礎結(jié)構,根據(jù)協(xié)議基礎結(jié)構生成合法游戲協(xié)議包,對合法游戲協(xié)議包進行異常值填充,得到異常游戲協(xié)議包,并通過向游戲服務器發(fā)送異常游戲協(xié)議包和合法游戲協(xié)議包,測試得到游戲服務器的狀態(tài)。

由此可以看出,當存儲在存儲器1520中的指令模塊被處理器1510執(zhí)行時,可實現(xiàn)前述各個實施例中查找模塊1521、解析模塊1522和存儲模塊1523的各種功能。

圖16為依據(jù)本發(fā)明一實施例的測試系統(tǒng)1600的結(jié)構示意圖。測試系統(tǒng)1600包括:游戲服務器1610、游戲客戶端1620、測試客戶端1630以及測試服務器1640。其中,

測試服務器1640,用于查找得到游戲客戶端所基于的協(xié)議的函數(shù),并根據(jù)函數(shù)獲得協(xié)議的協(xié)議基礎結(jié)構;

測試客戶端1630,用于,每次進行測試時,從測試服務器拉取協(xié)議基礎結(jié)構,根據(jù)協(xié)議基礎結(jié)構生成合法游戲協(xié)議包,對所生成的合法游戲協(xié)議包進行異常值填充,得到異常游戲協(xié)議包,并通過向游戲服務器1610發(fā)送異常游戲協(xié)議包和合法游戲協(xié)議包,測試得到游戲服務器的狀態(tài)。

在一實施例中,測試客戶端1630進一步將自身注入游戲客戶端1620;

游戲客戶端1620,用于加載被注入的測試客戶端1630;

測試客戶端1630收集由被注入了測試客戶端1630的游戲客戶端1620產(chǎn)生的原生協(xié)議數(shù)據(jù),將原生協(xié)議數(shù)據(jù)上傳給測試服務器1640,從測試服務器1640拉取原生協(xié)議數(shù)據(jù),根據(jù)原生協(xié)議數(shù)據(jù)對協(xié)議基礎結(jié)構進行填充,得到合法游戲協(xié)議包。

其中,測試客戶端1630可以包括圖12所示的各個模塊,測試服務器1640可以包括圖14所示的各個模塊。

以下僅對涉及游戲服務器1610、游戲客戶端1620、測試客戶端1630以及測試服務器1640之間交互的操作進行說明。圖16中僅示出了測試客戶端1630和測試服務器1640中和交互相關的模塊,具體如下:

注入模塊1210,用于將測試客戶端1630注入到游戲客戶端1620中;

發(fā)送模塊1140,用于向游戲服務器1610發(fā)送異常游戲協(xié)議包和合法游戲協(xié)議包;

發(fā)送模塊1140,進一步用于將收集模塊1220收集的原生協(xié)議數(shù)據(jù)上傳給測試服務器1640,并存儲到存儲模塊1430中;

接收模塊1150,用于接收游戲服務器1610響應于接收到的合法游戲協(xié)議包而發(fā)送的反饋;

拉取模塊1110,進一步用于從測試服務器1640中的存儲模塊1430拉取原生協(xié)議數(shù)據(jù)。

上述系統(tǒng)實施例中,各個模塊及單元實現(xiàn)自身功能的具體方法在方法實施例中均有描述,這里不再贅述。

另外,本發(fā)明的每一個實施例可以通過由數(shù)據(jù)處理設備如計算機執(zhí)行的數(shù)據(jù)處理程序來實現(xiàn)。顯然,數(shù)據(jù)處理程序構成了本發(fā)明。此外,通常存儲在一個存儲介質(zhì)中的數(shù)據(jù)處理程序通過直接將程序讀取出存儲介質(zhì)或者通過將程序安裝或復制到數(shù)據(jù)處理設備的存儲設備(如硬盤和或內(nèi)存)中執(zhí)行。因此,這樣的存儲介質(zhì)也構成了本發(fā)明。存儲介質(zhì)可以使用任何類型的記錄 方式,例如紙張存儲介質(zhì)(如紙帶等)、磁存儲介質(zhì)(如軟盤、硬盤、閃存等)、光存儲介質(zhì)(如CD-ROM等)、磁光存儲介質(zhì)(如MO等)等。

因此,本發(fā)明還公開了一種存儲介質(zhì),其中存儲有數(shù)據(jù)處理程序,該數(shù)據(jù)處理程序用于執(zhí)行本發(fā)明上述方法的任何一種實施例。

以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進等,均應包含在本發(fā)明保護的范圍之內(nèi)。

當前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
扎囊县| 抚州市| 渭南市| 三河市| 神池县| 乐都县| 台北市| 峨山| 西和县| 齐河县| 台南市| 明水县| 西乡县| 靖西县| 德保县| 乌鲁木齐县| 渝北区| 渝中区| 招远市| 石河子市| 巴南区| 福安市| 玉龙| 都江堰市| 广宗县| 平泉县| 旬邑县| 平舆县| 湘潭市| 凌源市| 广州市| 长沙市| 于都县| 大方县| 萝北县| 安顺市| 佛冈县| 英德市| 思茅市| 万盛区| 盖州市|