本發(fā)明涉及網(wǎng)絡(luò)技術(shù)領(lǐng)域,尤其涉及一種遠程調(diào)試的方法、相關(guān)設(shè)備及系統(tǒng)。
背景技術(shù):
對于超文本預(yù)處理器(英文全稱:Hypertext Preprocessor,英文縮寫:PHP)的程序而言,本地開發(fā)機需要隨時隨地訪問PHP,并通過跟蹤、調(diào)試和分析來確定其運行狀況,以此來進行遠程設(shè)備調(diào)試和程序的更新。
現(xiàn)有方案中,可以采用開放源代碼的PHP程序調(diào)試器Xdebug進行遠程調(diào)試,請參閱圖1,圖1為現(xiàn)有技術(shù)中Xdebug遠程調(diào)試的流程示意圖,下面將簡單介紹采用Xdebug遠程調(diào)試的方法:
第一步,本地開發(fā)機的集成開發(fā)環(huán)境(英文全稱:Integrated Development Environment,英文縮寫:IDE)開始監(jiān)聽9000端口的傳輸控制協(xié)議(英文全稱:Transmission Control Protocol,英文縮寫:TCP)連接請求;
第二步,本地開發(fā)機通過瀏覽器訪問待調(diào)試PHP請求,并攜帶Xdebug標識,該標識名未XDEBUG_SESSION;
第三步,PHP收到請求后,主動向本地開發(fā)機的9000端口發(fā)起TCP連接,從而與本地開發(fā)機的IDE建立了TCP連接;
第四步,本地開發(fā)機的IDE與PHP通過第三步建立的TCP連接進行調(diào)試。
然而,采用Xdebug遠程調(diào)試的方法只能應(yīng)用在沒有防火墻安全策略限制的網(wǎng)絡(luò)環(huán)境下,但是在絕大多數(shù)情況下,本地開發(fā)機網(wǎng)絡(luò)都存在防火墻安全策略限制,那么在Xdebug遠程調(diào)試的方法的第三步中,PHP會因為本地開發(fā)機存在防火墻機制從而無法建立連接,這也將無法進行設(shè)備間的遠程調(diào)試。
技術(shù)實現(xiàn)要素:
本發(fā)明實施例提供了一種遠程調(diào)試的方法、相關(guān)設(shè)備及系統(tǒng),可以在客戶端與服務(wù)器中分別部署代理,由于是客戶端代理主動向服務(wù)器代理發(fā)送客戶端識別標識,從而繞開了客戶端側(cè)的防火墻限制,從而實現(xiàn)在防火墻安全策略限制的情況下仍可以進行遠程調(diào)試。
有鑒于此,本發(fā)明第一方面提供了一種遠程調(diào)試的方法,所述方法應(yīng)用于遠程調(diào)試的系統(tǒng),所述系統(tǒng)中包括至少一個客戶端以及服務(wù)器,其中,在每個客戶端中部署客戶端代理,在所述服務(wù)器中部署服務(wù)器代理,針對所述每個客戶端中部署的所述客戶端代理,所述方法包括:
向所述服務(wù)器代理發(fā)送客戶端識別標識;
當(dāng)所述服務(wù)器代理根據(jù)所述客戶端識別標識確定客戶端身份時,接收所述服務(wù)器代理發(fā)送的待調(diào)試業(yè)務(wù)數(shù)據(jù);
將所述待調(diào)試業(yè)務(wù)數(shù)據(jù)發(fā)送至所述客戶端中的集成開發(fā)環(huán)境IDE,所述待調(diào)試業(yè)務(wù)數(shù)據(jù)用于所述IDE進行調(diào)試,并得到業(yè)務(wù)調(diào)試數(shù)據(jù);
接收所述IDE發(fā)送的所述業(yè)務(wù)調(diào)試數(shù)據(jù);
將所述業(yè)務(wù)調(diào)試數(shù)據(jù)發(fā)送至所述服務(wù)器代理,所述業(yè)務(wù)調(diào)試數(shù)據(jù)用于所述服務(wù)器進行業(yè)務(wù)調(diào)試。
本發(fā)明第二方面提供了一種遠程調(diào)試的方法,所述方法應(yīng)用于遠程調(diào)試的系統(tǒng),所述系統(tǒng)中包括至少一個客戶端以及服務(wù)器,其中,在每個客戶端中部署客戶端代理,在所述服務(wù)器中部署服務(wù)器代理,所述方法包括:
接收至少一個客戶端代理發(fā)送的客戶端識別標識;
根據(jù)所述客戶端識別標識確定每個客戶端的身份;
根據(jù)所述每個客戶端的身份,向每個客戶端代理發(fā)送對應(yīng)的待調(diào)試業(yè)務(wù)數(shù)據(jù),所述待調(diào)試業(yè)務(wù)數(shù)據(jù)用于所述客戶端中的集成開發(fā)環(huán)境IDE進行調(diào)試,并得到業(yè)務(wù)調(diào)試數(shù)據(jù);
接收所述每個客戶端代理發(fā)送的所述業(yè)務(wù)調(diào)試數(shù)據(jù),所述業(yè)務(wù)調(diào)試數(shù)據(jù)用于所述服務(wù)器進行業(yè)務(wù)調(diào)試。
本發(fā)明第三方面提供了一種客戶端代理,所述客戶端代理部署于客戶端,所述客戶端應(yīng)用于遠程調(diào)試的系統(tǒng),所述系統(tǒng)還包括服務(wù)器,所述服務(wù)器中部署服務(wù)器代理,所述客戶端代理包括:
第一發(fā)送模塊,用于向所述服務(wù)器代理發(fā)送客戶端識別標識;
第一接收模塊,用于當(dāng)所述服務(wù)器代理根據(jù)所述第一發(fā)送模塊發(fā)送的所述客戶端識別標識確定客戶端身份時,接收所述服務(wù)器代理發(fā)送的待調(diào)試業(yè)務(wù)數(shù)據(jù);
第二發(fā)送模塊,用于將所述第一接收模塊接收的所述待調(diào)試業(yè)務(wù)數(shù)據(jù)發(fā)送至所述客戶端中的集成開發(fā)環(huán)境IDE,所述待調(diào)試業(yè)務(wù)數(shù)據(jù)用于所述IDE進行調(diào)試,并得到業(yè)務(wù)調(diào)試數(shù)據(jù);
第二接收模塊,用于接收所述IDE發(fā)送的所述業(yè)務(wù)調(diào)試數(shù)據(jù);
第三發(fā)送模塊,用于將所述第二接收模塊接收的所述業(yè)務(wù)調(diào)試數(shù)據(jù)發(fā)送至所述服務(wù)器代理,所述業(yè)務(wù)調(diào)試數(shù)據(jù)用于所述服務(wù)器進行業(yè)務(wù)調(diào)試。
本發(fā)明第四方面提供了一種服務(wù)器代理,所述服務(wù)器代理部署于服務(wù)器,所述服務(wù)器應(yīng)用于遠程調(diào)試的系統(tǒng),所述系統(tǒng)還包括至少一個客戶端,在每個客戶端中部署客戶端代理,所述服務(wù)器代理包括:
第一接收模塊,用于接收至少一個客戶端代理發(fā)送的客戶端識別標識;
確定模塊,用于根據(jù)所述第一接收模塊接收的所述客戶端識別標識確定每個客戶端的身份;
第一發(fā)送模塊,用于根據(jù)所述確定模塊確定的所述每個客戶端的身份,向每個客戶端代理發(fā)送對應(yīng)的待調(diào)試業(yè)務(wù)數(shù)據(jù),所述待調(diào)試業(yè)務(wù)數(shù)據(jù)用于所述客戶端中的集成開發(fā)環(huán)境IDE進行調(diào)試,并得到業(yè)務(wù)調(diào)試數(shù)據(jù);
第二接收模塊,用于接收所述每個客戶端代理發(fā)送的所述業(yè)務(wù)調(diào)試數(shù)據(jù),所述業(yè)務(wù)調(diào)試數(shù)據(jù)用于所述服務(wù)器進行業(yè)務(wù)調(diào)試。
本發(fā)明第五方面提供了一種遠程調(diào)試的系統(tǒng),所述系統(tǒng)包括至少一個客戶端以及服務(wù)器,其中,在每個客戶端中部署客戶端代理,在所述服務(wù)器中部署服務(wù)器代理;
所述客戶端代理向所述服務(wù)器代理發(fā)送客戶端識別標識;
所述服務(wù)器代理根據(jù)所述客戶端識別標識確定每個客戶端的身份;
所述服務(wù)器代理根據(jù)所述每個客戶端的身份,向每個客戶端代理發(fā)送對應(yīng)的待調(diào)試業(yè)務(wù)數(shù)據(jù),
所述客戶端代理將所述待調(diào)試業(yè)務(wù)數(shù)據(jù)發(fā)送至所述客戶端中的集成開發(fā)環(huán)境IDE,所述待調(diào)試業(yè)務(wù)數(shù)據(jù)用于所述IDE進行調(diào)試,并得到業(yè)務(wù)調(diào)試數(shù)據(jù);
所述客戶端代理接收所述IDE發(fā)送的所述業(yè)務(wù)調(diào)試數(shù)據(jù);
所述客戶端代理將所述業(yè)務(wù)調(diào)試數(shù)據(jù)發(fā)送至所述服務(wù)器代理,所述業(yè)務(wù)調(diào)試數(shù)據(jù)用于所述服務(wù)器進行業(yè)務(wù)調(diào)試。
從以上技術(shù)方案可以看出,本發(fā)明實施例具有以下優(yōu)點:
本發(fā)明實施例中,提供了一種遠程調(diào)試的方法,該方法應(yīng)用于遠程調(diào)試的系統(tǒng),該系統(tǒng)中包括至少一個客戶端以及服務(wù)器,其中,每個客戶端中部署客戶端代理,而在服務(wù)器中部署服務(wù)器代理,每個客戶端中部署的戶端代理分別向服務(wù)器代理發(fā)送客戶端識別標識,當(dāng)服務(wù)器代理根據(jù)客戶端識別標識確定客戶端身份時,客戶端代理接收服務(wù)器代理發(fā)送的待調(diào)試業(yè)務(wù)數(shù)據(jù),待調(diào)試業(yè)務(wù)數(shù)據(jù)用于客戶端中的集成開發(fā)環(huán)境進行調(diào)試,并得到業(yè)務(wù)調(diào)試數(shù)據(jù),然后接收集成開發(fā)環(huán)境發(fā)送的業(yè)務(wù)調(diào)試數(shù)據(jù),最后將業(yè)務(wù)調(diào)試數(shù)據(jù)發(fā)送至服務(wù)器代理,業(yè)務(wù)調(diào)試數(shù)據(jù)用于服務(wù)器進行業(yè)務(wù)調(diào)試。通過上述方式,在客戶端與服務(wù)器中分別部署代理,由于是客戶端代理主動向服務(wù)器代理發(fā)送客戶端識別標識,從而繞開了客戶端側(cè)的防火墻限制,從而實現(xiàn)在防火墻安全策略限制的情況下仍可以進行遠程調(diào)試。
附圖說明
圖1為現(xiàn)有技術(shù)中Xdebug遠程調(diào)試的流程示意圖;
圖2為本發(fā)明實施例中遠程調(diào)試的系統(tǒng)架構(gòu)圖;
圖3為本發(fā)明實施例中遠程調(diào)試的方法一個交互實施例示意圖;
圖4為本發(fā)明實施例中遠程調(diào)試的方法一個實施例示意圖;
圖5為本發(fā)明實施例中客戶端代理的工作流程示意圖;
圖6為本發(fā)明實施例中遠程調(diào)試的方法另一個實施例示意圖;
圖7為本發(fā)明實施例中服務(wù)器代理的工作流程示意圖;
圖8為應(yīng)用場景中跨防火墻遠程調(diào)試的流程示意圖;
圖9為本發(fā)明實施例中客戶端代理一個實施例示意圖;
圖10為本發(fā)明實施例中客戶端代理另一個實施例示意圖;
圖11為本發(fā)明實施例中客戶端代理另一個實施例示意圖;
圖12為本發(fā)明實施例中客戶端代理另一個實施例示意圖;
圖13為本發(fā)明實施例中服務(wù)器代理一個實施例示意圖;
圖14為本發(fā)明實施例中服務(wù)器代理另一個實施例示意圖;
圖15為本發(fā)明實施例中服務(wù)器代理另一個實施例示意圖;
圖16為本發(fā)明實施例中服務(wù)器代理另一個實施例示意圖;
圖17為本發(fā)明實施例中服務(wù)器代理另一個實施例示意圖;
圖18為本發(fā)明實施例中客戶端代理一個實施例示意圖;
圖19為本發(fā)明實施例中服務(wù)器代理一個實施例示意圖;
圖20為本發(fā)明實施例中遠程調(diào)試的系統(tǒng)一個實施例示意圖。
具體實施方式
本發(fā)明實施例提供了一種遠程調(diào)試的方法、相關(guān)設(shè)備及系統(tǒng),可以在客戶端與服務(wù)器中分別部署代理,由于是客戶端代理主動向服務(wù)器代理發(fā)送客戶端識別標識,從而繞開了客戶端側(cè)的防火墻限制,從而實現(xiàn)在防火墻安全策略限制的情況下仍可以進行遠程調(diào)試。
本發(fā)明的說明書和權(quán)利要求書及上述附圖中的術(shù)語“第一”、“第二”、“第三”、“第四”等(如果存在)是用于區(qū)別類似的對象,而不必用于描述特定的順序或先后次序。應(yīng)該理解這樣使用的數(shù)據(jù)在適當(dāng)情況下可以互換,以便這里描述的本發(fā)明的實施例例如能夠以除了在這里圖示或描述的那些以外的順序?qū)嵤?。此外,術(shù)語“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,例如,包含了一系列步驟或單元的過程、方法、系統(tǒng)、產(chǎn)品或設(shè)備不必限于清楚地列出的那些步驟或單元,而是可包括沒有清楚地列出的或?qū)τ谶@些過程、方法、產(chǎn)品或設(shè)備固有的其它步驟或單元。
應(yīng)理解,本發(fā)明應(yīng)用于遠程調(diào)試的系統(tǒng),請參閱圖2,圖2為本發(fā)明實施例中遠程調(diào)試的系統(tǒng)架構(gòu)圖。如圖2所示,遠程調(diào)試系統(tǒng)中有一臺服務(wù)器以及多個客戶端,其中,圖中的5個客戶端僅為一個示意,在實際應(yīng)用中還可能存在其他數(shù)量的客戶端。
本發(fā)明中,客戶端可以是安裝于個人電腦(英文全稱:Personal Computer,英文縮寫:PC),或者移動終端中的一個應(yīng)用程序,移動終端還可以是智能手機、平板電腦或者個人數(shù)字助理(英文全稱:Personal Digital Assistant,英文縮寫:PDA),此處不做限定。
客戶端或稱為用戶端,是指與服務(wù)器相對應(yīng),為用戶提供本地服務(wù)的應(yīng)用程序。除了一些只在本地運行的應(yīng)用程序之外,一般安裝在普通的用戶設(shè)備上,需要與服務(wù)端互相配合運行。
本方案中所采用的客戶端為安裝于本地開發(fā)機中的客戶端,通過該客戶端實時監(jiān)測應(yīng)用程序的運行,在出現(xiàn)異常時也可以較快的給出回應(yīng),還能通過該客戶端與服務(wù)器之間建立特定的通信連接,并且進行數(shù)據(jù)調(diào)試,由此來保證應(yīng)用程序的正常運行。本地開發(fā)機主要就是用來做各種開發(fā)和設(shè)置的。
本地開發(fā)機中,還具有瀏覽器和IDE,瀏覽器是指可以顯示網(wǎng)頁服務(wù)器或者文件系統(tǒng)的超級文本標記語言(英文全稱:Hyper Text Markup Language,英文縮寫:HTML)文件,并且可以讓用戶與這些文件進行交互的一種軟件。
IDE是用于提供程序開發(fā)環(huán)境的應(yīng)用程序,一般包括代碼編輯器、編譯器、調(diào)試器和圖形用戶界面工具。集成了代碼編寫功能、分析功能、編譯功能、調(diào)試功能等一體化的開發(fā)軟件服務(wù)套。所有具備這一特性的軟件或者軟件組都可以叫集成開發(fā)環(huán)境。
與至少一個客戶端保持通信連接的服務(wù)器具體可以是PHP服務(wù)器,PHP是一種通用開源腳本語言。語法吸收了C語言、Java語音和Perl語音的特點,利于學(xué)習(xí),并且使用廣泛,主要適用于網(wǎng)站開發(fā)領(lǐng)域。PHP是將程序嵌入到HTML文檔中去執(zhí)行。PHP還可以執(zhí)行編譯后代碼,編譯可以達到加密和優(yōu)化代碼運行,使代碼運行更快。PHP服務(wù)器就是利用PHP進行開源的服務(wù)器,在PHP服務(wù)器中,使用Xdebug可用于PHP調(diào)試工作,其中,Xdebug是一個開放源代碼的PHP程序調(diào)試器,可以用來跟蹤、調(diào)試和分析PHP程序的運行狀況。在PHP服務(wù)器中使用Xdebug進行調(diào)試也是一種常見的手段。
然而,如果本地開發(fā)機與PHP服務(wù)器建立通信連接時,若遭遇到本地開發(fā)機側(cè)設(shè)置的防火墻阻礙時,就無法實現(xiàn)本地開發(fā)機的IDE與PHP服務(wù)器之間的通信,于是在本方案中,需要在本地開發(fā)機與PHP服務(wù)器中分布部署一個代理,通過代理之間的通信繞開防火墻的阻礙。代理也稱網(wǎng)絡(luò)代理,是一種特殊的網(wǎng)絡(luò)服務(wù),允許一個客戶端通過這個網(wǎng)絡(luò)服務(wù)與另一個服務(wù)器進行非直接的連接。
為了便于理解,請參閱圖3,圖3為本發(fā)明實施例中遠程調(diào)試的方法一個交互實施例示意圖,如圖所示,具體為:
步驟201中,部署與客戶端中的客戶端代理先向部署與服務(wù)器中的服務(wù)器代理發(fā)送客戶端識別標識,該客戶端識別標識可以被一些特定消息所攜帶;
步驟202中,服務(wù)器代理收到客戶端識別標識后,就能夠判斷出當(dāng)前需要進行調(diào)試的客戶端身份,也就是通過客戶端識別標識可以識別不同用戶的身份,以此還能實現(xiàn)多人并行調(diào)試,服務(wù)器代理通過客戶端識別標識與客戶端代理建立通信連接,并實時相互傳遞數(shù)據(jù);
步驟203中,服務(wù)器代理與服務(wù)器中的Xdebug建立起通信連接,并且實時向Xdebug傳遞來自客戶端的數(shù)據(jù),在Xdebug根據(jù)客戶端所傳遞的數(shù)據(jù)進行調(diào)試后得到待調(diào)試業(yè)務(wù)數(shù)據(jù),然后向客戶端代理發(fā)送該待調(diào)試業(yè)務(wù)數(shù)據(jù);
步驟204中,客戶端代理接收到待調(diào)試業(yè)務(wù)數(shù)據(jù)后,向IDE轉(zhuǎn)發(fā)待調(diào)試業(yè)務(wù)數(shù)據(jù),IDE開始進行調(diào)試,并得到業(yè)務(wù)調(diào)試數(shù)據(jù),進而向服務(wù)器代理發(fā)送業(yè)務(wù)調(diào)試數(shù)據(jù);
步驟205中,服務(wù)器代理向Xdebug發(fā)送業(yè)務(wù)調(diào)試數(shù)據(jù),然后通過Xdebug進行業(yè)務(wù)調(diào)試,得到調(diào)試后的信息,可以通過客戶端識別標識分別向不同的客戶端發(fā)送調(diào)試后的信息。
下面將從客戶端代理的角度,對本發(fā)明中遠程調(diào)試的方法進行介紹,請參閱圖4,本發(fā)明實施例中遠程調(diào)試的方法一個實施例包括:
301、客戶端中部署的客戶端代理向服務(wù)器代理發(fā)送客戶端識別標識,客戶端應(yīng)用于遠程調(diào)試的系統(tǒng),遠程調(diào)試的系統(tǒng)中包括至少一個客戶端以及服務(wù)器,其中,在每個客戶端中部署客戶端代理,在服務(wù)器中部署服務(wù)器代理;
本實施例中,在遠程調(diào)試的系統(tǒng)中包括了一臺服務(wù)器和至少一個客戶端,每個客戶端中都具有一個客戶端代理,而服務(wù)器中也具有服務(wù)器代理,且不同的客戶端代理具有不同的客戶端識別標識,服務(wù)器代理可以通過該客戶端識別標識來識別不同的客戶端。
至少一個客戶端代理向服務(wù)器發(fā)送客戶端識別標識,客戶端識別標識具體可以是服務(wù)器代理與客戶端代理事先約定好的一個字符串。
302、當(dāng)服務(wù)器代理根據(jù)客戶端識別標識確定客戶端身份時,接收服務(wù)器代理發(fā)送的待調(diào)試業(yè)務(wù)數(shù)據(jù);
本實施例中,服務(wù)器代理收到客戶端識別標識之后,能夠確認客戶端的身份,也就是能夠確認部署與客戶端中的客戶端代理身份,接下來與客戶端代理之間建立通信連接,并實時接收客戶端代理發(fā)送的數(shù)據(jù)。服務(wù)器代理將客戶端代理發(fā)送的數(shù)據(jù)轉(zhuǎn)發(fā)至Xdebug中進行調(diào)試,可以得到待調(diào)試業(yè)務(wù)數(shù)據(jù),隨后,服務(wù)器代理將待調(diào)試業(yè)務(wù)數(shù)據(jù)發(fā)送到對應(yīng)的客戶端代理中。
303、將待調(diào)試業(yè)務(wù)數(shù)據(jù)發(fā)送至客戶端中的集成開發(fā)環(huán)境IDE,待調(diào)試業(yè)務(wù)數(shù)據(jù)用于IDE進行調(diào)試,并得到業(yè)務(wù)調(diào)試數(shù)據(jù);
本實施例中,客戶端代理收到服務(wù)器代理發(fā)送的待調(diào)試業(yè)務(wù)數(shù)據(jù)后,向客戶端中的IDE發(fā)送待調(diào)試業(yè)務(wù)數(shù)據(jù),使得IDE對待調(diào)試業(yè)務(wù)數(shù)據(jù)開始進行調(diào)試,得到業(yè)務(wù)調(diào)試數(shù)據(jù)。
304、接收IDE發(fā)送的業(yè)務(wù)調(diào)試數(shù)據(jù);
本實施例中,IDE將調(diào)試得到的業(yè)務(wù)調(diào)試數(shù)據(jù)發(fā)送回客戶端代理。
305、將業(yè)務(wù)調(diào)試數(shù)據(jù)發(fā)送至服務(wù)器代理,業(yè)務(wù)調(diào)試數(shù)據(jù)用于服務(wù)器進行業(yè)務(wù)調(diào)試。
本實施例中,調(diào)試過程中IDE的業(yè)務(wù)調(diào)試數(shù)據(jù)通過客戶端代理發(fā)送到服務(wù)器代理,再由服務(wù)器代理發(fā)送至Xdebug。Xdebug調(diào)試后根據(jù)客戶端識別標識分別下發(fā)調(diào)試后的業(yè)務(wù)調(diào)試數(shù)據(jù)給對應(yīng)的客戶端,以此完成遠程調(diào)試。
本發(fā)明實施例中,提供了一種遠程調(diào)試的方法,在客戶端與服務(wù)器中分別部署代理。由于是客戶端代理主動向服務(wù)器代理發(fā)送客戶端識別標識,從而繞開了客戶端側(cè)的防火墻限制,從而實現(xiàn)在防火墻安全策略限制的情況下仍可以進行遠程調(diào)試。
可選地,在上述圖4對應(yīng)的實施例的基礎(chǔ)上,本發(fā)明實施例提供的遠程調(diào)試的方法第一個可選實施例中,向服務(wù)器代理發(fā)送客戶端識別標識,可以包括:
通過服務(wù)器代理的第一端口向服務(wù)器代理發(fā)送第一傳輸控制協(xié)議TCP連接請求;
當(dāng)根據(jù)第一TCP連接請求建立數(shù)據(jù)傳輸通道時,通過數(shù)據(jù)傳輸通道向服務(wù)器代理發(fā)送客戶端識別標識。
本實施例中,客戶端代理向服務(wù)器代理發(fā)送客戶端識別標識,還需要提前在客戶端代理與服務(wù)器代理之前建立通信連接。
具體為,服務(wù)器代理被開啟后會實時監(jiān)聽是否有請求的接入,而客戶端代理與服務(wù)器代理均采用第一端口,于是客戶端代理通過第一端口向服務(wù)器代理的第一端口發(fā)送第一傳輸控制協(xié)議(英文全稱:Transmission Control Protocol,英文縮寫:TCP)連接請求,服務(wù)器代理收到第一TCP連接請求后,會響應(yīng)該請求,然后與客戶端代理建立起的TCP數(shù)據(jù)傳輸通道,從而可以通過TCP數(shù)據(jù)傳輸通道向服務(wù)器代理發(fā)送客戶端識別標識。
其中,第一端口可以為8080端口,8080端口同80端口,是被用于環(huán)球信息網(wǎng)代理服務(wù)的,可以實現(xiàn)網(wǎng)頁瀏覽。在網(wǎng)頁服務(wù)器或超文本傳輸協(xié)議的后臺程序中,在默認情況下,8080端口是服務(wù)器偵聽客戶端請求的端口。
第一TCP連接請求是一種面向連接的、可靠的并基于字節(jié)流的傳輸層通信協(xié)議,TCP為了保證報文傳輸?shù)目煽?,就給每個數(shù)據(jù)包一個序號,同時序號也保證了傳送到接收端實體的包的按序接收。然后接收端實體對已成功收到的字節(jié)發(fā)回一個相應(yīng)的確認;如果發(fā)送端實體在合理的往返時延內(nèi)未收到確認,那么對應(yīng)的數(shù)據(jù)將會被重傳。
其次,本發(fā)明實施例中,客戶端代理具體可以通過向服務(wù)器代理的第一端口向服務(wù)器代理發(fā)送第一TCP連接請求,來建立與服務(wù)器代理的數(shù)據(jù)傳輸通道,并且通過數(shù)據(jù)傳輸通道向服務(wù)器代理發(fā)送客戶端識別標識。通過上述方式可以有效地建立起客戶端代理與服務(wù)器代理之間的連接,避開了防火墻的限制,由此增強了方案的實用性。
可選地,在上述圖4對應(yīng)的實施例的基礎(chǔ)上,本發(fā)明實施例提供的遠程調(diào)試的方法第二個可選實施例中,接收IDE發(fā)送的業(yè)務(wù)調(diào)試數(shù)據(jù)之前,還可以包括:
判斷是否接收到初始調(diào)試請求;
若接收到初始調(diào)試請求,則與IDE建立TCP連接通道,并通過TCP連接通道向IDE發(fā)送待調(diào)試業(yè)務(wù)數(shù)據(jù);
若未接收到初始調(diào)試請求,則向IDE透傳待調(diào)試業(yè)務(wù)數(shù)據(jù)。
本實施例中,客戶端代理在接收IDE發(fā)送業(yè)務(wù)調(diào)試數(shù)據(jù)之前,還需檢測是否接收到服務(wù)器代理發(fā)出的Xdebug的初始調(diào)試請求。
具體為,客戶端代理通過正則表達式進行匹配驗證,驗證當(dāng)前是否收到Xdebug初始調(diào)試請求。如果調(diào)試請求與正則表達式的內(nèi)容匹配時,則確定收到的是Xdebug初始調(diào)試請求。于是,客戶端代理與IDE建立TCP連接通道,通過該TCP連接通道可以向IDE發(fā)送待調(diào)試業(yè)務(wù)數(shù)據(jù),IDE可以根據(jù)待調(diào)試業(yè)務(wù)數(shù)據(jù)進行調(diào)試。
其中,IDE集成代碼編輯、代碼生成、界面設(shè)計、調(diào)試以及編譯等功能,目前還融合了建模功能,IDE將這些功能集成在一個桌面環(huán)境中,這樣就大大方便了用戶進行可視化調(diào)試。
如果沒有收到Xdebug初始調(diào)試請求,則直接向IDE透傳待調(diào)試業(yè)務(wù)數(shù)據(jù),無需IDE對該待調(diào)試業(yè)務(wù)數(shù)據(jù)進行任何處理。透傳即是透明傳送,即傳送網(wǎng)絡(luò)無論傳輸業(yè)務(wù)如何,只負責(zé)將需要傳送的業(yè)務(wù)傳送到目的節(jié)點,同時保證傳輸?shù)馁|(zhì)量即可,而不對傳輸?shù)臉I(yè)務(wù)進行處理。
需要說明的是,正則表達式可以是match(/<init.*idekey=\”(\w+)\”/),也可以是其他合理的表達式,正則表達式使用單個字符串來描述和匹配一系列符合某個句法規(guī)則。在很多文本編輯器里,正則表達式通常被用來檢索、替換那些符合某個模式的文本,此處不對用于檢測初始調(diào)試請求的正則表達式內(nèi)容具體限定。
其次,本發(fā)明實施例中,說明了若是需要IDE對待調(diào)試業(yè)務(wù)數(shù)據(jù)進行調(diào)試處理,還需要接收初始調(diào)試請求,以此可以防止對所有待調(diào)試業(yè)務(wù)數(shù)據(jù)都進行調(diào)試的情況,節(jié)省調(diào)試和計算資源,只針對服務(wù)器側(cè)進行Xdebug調(diào)試的數(shù)據(jù)進行處理。
可選地,在上述圖4對應(yīng)的第二個實施例的基礎(chǔ)上,本發(fā)明實施例提供的遠程調(diào)試的方法第三個可選實施例中,與IDE建立TCP連接,并根據(jù)TCP連接向IDE發(fā)送待調(diào)試業(yè)務(wù)數(shù)據(jù),可以包括:
根據(jù)初始調(diào)試請求,緩存待調(diào)試業(yè)務(wù)數(shù)據(jù);
通過IDE的第二端口向IDE發(fā)送第二TCP連接請求;
當(dāng)IDE響應(yīng)第二TCP連接請求時,向IDE發(fā)送待調(diào)試業(yè)務(wù)數(shù)據(jù)。
本實施例中,在客戶端代理與IDE建立TCP連接通道,并通過該TCP連接通道向IDE發(fā)送待調(diào)試業(yè)務(wù)數(shù)據(jù)。
具體為,客戶端代理根據(jù)接收到的Xdebug初始調(diào)試請求,緩存待調(diào)試業(yè)務(wù)數(shù)據(jù),也就是將待調(diào)試業(yè)務(wù)數(shù)據(jù)存放在數(shù)據(jù)交換的緩沖區(qū),當(dāng)IDE要讀取待調(diào)試業(yè)務(wù)數(shù)據(jù)時,會首先從緩存中查找需要的數(shù)據(jù),如果找到了則直接執(zhí)行。由于緩存的運行速度比內(nèi)存快得多,故緩存的作用就是幫助硬件更快地運行。
客戶端代理與IDE中都包含了第二端口,于是,客戶端代理通過自身的第二端口向IDE的第二端口發(fā)送第二TCP連接請求,進而IDE會響應(yīng)該第二TCP連接請求,并與客戶端代理建立起TCP數(shù)據(jù)連接通道。最后客戶端代理可以通過該TCP數(shù)據(jù)傳輸通道向IDE發(fā)送待調(diào)試業(yè)務(wù)數(shù)據(jù)。
其中,第二端口可以為9000端口,9000端口為TCP傳輸?shù)亩丝凇?/p>
再次,本發(fā)明實施例中,客戶端代理可以進一步緩存待調(diào)試業(yè)務(wù)數(shù)據(jù),緩存的運行速度比內(nèi)存快得多,故緩存的作用就是幫助硬件更快地運行,以此提升方案是使用效率。以外,客戶端代理具體可以通過向IDE的第二端口發(fā)送第二TCP連接請求,來建立與IDE的數(shù)據(jù)傳輸通道,有效地建立起客戶端代理與IDE間的連接,增強了方案的實用性。
為便于理解,下面可以以一個具體應(yīng)用場景對本發(fā)明中客戶端代理的工作流程過程進行詳細描述,請參閱圖5,圖5為本發(fā)明實施例中客戶端代理的工作流程示意圖,具體為:
步驟401,客戶端代理通過自身的8080端口向服務(wù)器代理的8080端口發(fā)送TCP連接請求;
步驟402,在TCP連接請求成功之后,客戶端代理向服務(wù)器代理發(fā)送注冊idekey請求,其中,注冊idekey請求可以是proxy init idekey=”myidekey”;
步驟403,在服務(wù)器代理收到注冊idekey請求后,就可以識別出idekey,并且與對應(yīng)的客戶端代理進行關(guān)聯(lián),于是客戶端代理接收到服務(wù)器發(fā)送的數(shù)據(jù),這些數(shù)據(jù)可以是待調(diào)試業(yè)務(wù)數(shù)據(jù);
步驟404,客戶端代理檢測當(dāng)前是否收到Xdebug初始調(diào)試請求,檢測的方式可以通過正則表達式進行匹配驗證,具體為,match(/<init.*idekey=\”(\w+)\”/);
步驟405,如果根據(jù)正則表達式進行驗證后,確定當(dāng)前收到的不是Xdebug初始調(diào)試請求,于是客戶端代理直接向IDE透傳待調(diào)試業(yè)務(wù)數(shù)據(jù);
步驟406,如果根據(jù)正則表達式進行驗證后,確定當(dāng)前收到的是Xdebug初始調(diào)試請求,則緩存待調(diào)試業(yè)務(wù)數(shù)據(jù),并且客戶端代理通過自身的9000端口向IDE的9000端口發(fā)起TCP連接請求;
步驟407,當(dāng)IDE根據(jù)TCP連接請求與客戶端代理建立連接后,客戶端代理向IDE轉(zhuǎn)發(fā)緩存的待調(diào)試業(yè)務(wù)數(shù)據(jù);
步驟408,IDE收到待調(diào)試業(yè)務(wù)數(shù)據(jù)后會進行調(diào)試,并得到業(yè)務(wù)調(diào)試數(shù)據(jù),進而向客戶端代理發(fā)送業(yè)務(wù)調(diào)試數(shù)據(jù),再由客戶端代理向服務(wù)器代理轉(zhuǎn)發(fā)業(yè)務(wù)調(diào)試數(shù)據(jù),使服務(wù)器代理進行調(diào)試。
上述實施例是從客戶端代理的角度對本發(fā)明中遠程調(diào)試的方法進行介紹,下面將以服務(wù)器代理的角度對本發(fā)明中遠程調(diào)試的方法進行介紹,請參閱圖6,本發(fā)明實施例中遠程調(diào)試的方法一個實施例包括:
501、服務(wù)器中部署的服務(wù)器代理接收至少一個客戶端代理發(fā)送的客戶端識別標識,服務(wù)器應(yīng)用于遠程調(diào)試的系統(tǒng),遠程調(diào)試的系統(tǒng)中包括至少一個客戶端以及服務(wù)器,其中,在每個客戶端中部署客戶端代理,在服務(wù)器中部署服務(wù)器代理;
本實施例中,服務(wù)器中部署的服務(wù)器代理可以接收至少一個客戶端代理發(fā)送的客戶端識別標識,不同的客戶端識別標識可以指示不同的客戶端。
其中,服務(wù)器代理被部署在服務(wù)器中,而服務(wù)器應(yīng)用于遠程調(diào)試的系統(tǒng),該系統(tǒng)中還包括了至少一個客戶端,每個客戶端中部署了客戶端代理。
502、根據(jù)客戶端識別標識確定每個客戶端的身份;
本實施例中,服務(wù)器代理可以根據(jù)客戶端標識確定出每個客戶端的身份,從而也能夠識別出收到的數(shù)據(jù)是來自于哪個客戶端代理的,并向還可以向不同的客戶端代理發(fā)送對應(yīng)的數(shù)據(jù)。
503、根據(jù)每個客戶端的身份,向每個客戶端代理發(fā)送對應(yīng)的待調(diào)試業(yè)務(wù)數(shù)據(jù),待調(diào)試業(yè)務(wù)數(shù)據(jù)用于客戶端中的集成開發(fā)環(huán)境IDE進行調(diào)試,并得到業(yè)務(wù)調(diào)試數(shù)據(jù);
本實施例中,服務(wù)器代理根據(jù)每個客戶端的身份,分別向每個客戶端代理發(fā)送對應(yīng)的待調(diào)試數(shù)據(jù),可能不同的客戶端用于調(diào)試不同的待調(diào)試業(yè)務(wù)數(shù)據(jù),于是客戶端代理會轉(zhuǎn)而向客戶端中的IDE發(fā)送待調(diào)試業(yè)務(wù)數(shù)據(jù),由IDE在客戶端側(cè)進行調(diào)試后得到業(yè)務(wù)調(diào)試數(shù)據(jù)。
504、接收每個客戶端代理發(fā)送的業(yè)務(wù)調(diào)試數(shù)據(jù),業(yè)務(wù)調(diào)試數(shù)據(jù)用于服務(wù)器進行業(yè)務(wù)調(diào)試。
本實施例中,IDE得到業(yè)務(wù)調(diào)試數(shù)據(jù)后,先向客戶端代理發(fā)送業(yè)務(wù)調(diào)試數(shù)據(jù),再由各個客戶端代理向服務(wù)器代理發(fā)送業(yè)務(wù)調(diào)試數(shù)據(jù),使得服務(wù)器側(cè)可以自動進行后續(xù)的業(yè)務(wù)調(diào)試。
本發(fā)明實施例中,提供了一種遠程調(diào)試的方法,在客戶端與服務(wù)器中分別部署代理。由于是客戶端代理主動向服務(wù)器代理發(fā)送客戶端識別標識,從而繞開了客戶端側(cè)的防火墻限制,從而實現(xiàn)在防火墻安全策略限制的情況下仍可以進行遠程調(diào)試。
可選地,在上述圖6對應(yīng)的實施例的基礎(chǔ)上,本發(fā)明實施例提供的遠程調(diào)試的方法第一個可選實施例中,接收至少一個客戶端代理發(fā)送的客戶端識別標識,可以包括:
監(jiān)聽服務(wù)器代理的第一端口是否接收到至少一個客戶端代理發(fā)送的第一傳輸控制協(xié)議TCP連接請求;
若監(jiān)聽到第一TCP連接請求,則接收至少一個客戶端代理發(fā)送的客戶端識別標識。
本實施例中,服務(wù)器代理實時監(jiān)聽第一端口有沒有收到指示一個客戶端代理發(fā)出的第一TCP連接請求。客戶端代理與服務(wù)器代理均采用第一端口,第一端口可以為8080端口,8080端口同80端口,是被用于環(huán)球信息網(wǎng)代理服務(wù)的,可以實現(xiàn)網(wǎng)頁瀏覽。在網(wǎng)頁服務(wù)器或超文本傳輸協(xié)議的后臺程序中,在默認情況下,8080端口是服務(wù)器偵聽客戶端請求的端口。
在服務(wù)器代理監(jiān)聽到第一TCP連接請求之后,就可以接收至少一個客戶端代理發(fā)送的客戶端識別標識。
其次,本發(fā)明實施例中,服務(wù)器代理具體可以通過監(jiān)聽服務(wù)器代理的第一端口,來確定是否接收到至少一個客戶端代理發(fā)送的第一TCP連接請求,若監(jiān)聽到第一TCP連接請求,則接收至少一個客戶端代理發(fā)送的客戶端識別標識。通過上述方式可以有效地建立起客戶端代理與服務(wù)器代理之間的連接,避開了防火墻的限制,由此增強了方案的實用性。
可選地,在上述圖6對應(yīng)的實施例的基礎(chǔ)上,本發(fā)明實施例提供的遠程調(diào)試的方法第二個可選實施例中,接收至少一個客戶端代理發(fā)送的客戶端識別標識之前,還可以包括:
接收至少一個客戶端代理發(fā)送的數(shù)據(jù)處理請求;
若數(shù)據(jù)處理請求為標識注冊請求,則獲取第一端口所對應(yīng)的每個客戶端的身份與客戶端識別標識的關(guān)聯(lián)關(guān)系;
若數(shù)據(jù)處理請求為數(shù)據(jù)調(diào)試請求,則向服務(wù)器中的處理器發(fā)送數(shù)據(jù)調(diào)試請求,數(shù)據(jù)調(diào)試請求用于處理器生成待調(diào)試業(yè)務(wù)數(shù)據(jù)。
本實施例中,服務(wù)器先接收至少一個客戶端代理發(fā)送的數(shù)據(jù)處理請求,其中不同的客戶端代理所發(fā)送的數(shù)據(jù)處理請求內(nèi)容可能是不一樣的。
具體地,有的數(shù)據(jù)處理請求為標識注冊請求,而有的數(shù)據(jù)處理請求為數(shù)據(jù)調(diào)試請求。服務(wù)器需要識別數(shù)據(jù)處理請求的類型。如果接收到的是標識注冊請求,則需要獲取服務(wù)器的第一端口所對應(yīng)的每個客戶端的身份與客戶端識別標識的關(guān)聯(lián)關(guān)系。例如,客戶端識別標識1對應(yīng)的是客戶端A,客戶端識別標識2對應(yīng)的客戶端B,以此類推。得知它們之間的聯(lián)系后,便能根據(jù)該聯(lián)系之間確定服務(wù)器代理與客戶端代理之間數(shù)據(jù)發(fā)送的目的地。
若數(shù)據(jù)處理請求為數(shù)據(jù)調(diào)試請求,那么就可以不用再去建立客戶端識別標識與客戶端代理之間的關(guān)聯(lián)關(guān)系,而是在服務(wù)器內(nèi)部的處理器中生成待調(diào)試業(yè)務(wù)數(shù)據(jù),然后直接向?qū)?yīng)的客戶端代理發(fā)送待調(diào)試業(yè)務(wù)數(shù)據(jù)。
其次,本發(fā)明實施例中,服務(wù)器可以對接收的數(shù)據(jù)處理請求進行確定,若數(shù)據(jù)處理請求為標識注冊請求,則獲取第一端口所對應(yīng)的每個客戶端的身份與客戶端識別標識的關(guān)聯(lián)關(guān)系,若數(shù)據(jù)處理請求為數(shù)據(jù)調(diào)試請求,則向服務(wù)器中的處理器發(fā)送數(shù)據(jù)調(diào)試請求。通過上述方式,服務(wù)器可以更準確地識別客戶端側(cè)發(fā)送的請求,并作出相應(yīng)回應(yīng),以此提升方案的可行性。
可選地,在上述圖6對應(yīng)的第二個實施例的基礎(chǔ)上,本發(fā)明實施例提供的遠程調(diào)試的方法第三個可選實施例中,向服務(wù)器中的處理器發(fā)送數(shù)據(jù)調(diào)試請求,可以包括:
通過第二端口向處理器的第二端口發(fā)送第二TCP連接請求;
當(dāng)根據(jù)第二TCP連接請求建立數(shù)據(jù)傳輸通道時,通過數(shù)據(jù)傳輸通道向處理器發(fā)送數(shù)據(jù)調(diào)試請求。
本實施例中,服務(wù)器代理通過自身的第二端口向處理器的第二端口發(fā)送第二TCP連接請求,該請求用于服務(wù)器內(nèi)部的服務(wù)器代理與處理器建立通信連接。當(dāng)處理器接收該第二TCP請求連接,并且建立服務(wù)器代理與處理器質(zhì)檢的數(shù)據(jù)傳輸通道時,即可通過該通道傳輸數(shù)據(jù)調(diào)試請求。
可以理解的是,服務(wù)器代理與處理器之間建立的數(shù)據(jù)傳輸通道為TCP傳輸通道。
再次,本發(fā)明實施例中,在服務(wù)器中建立服務(wù)器代理與處理之間的數(shù)據(jù)連接通道,以此可以順利收發(fā)數(shù)據(jù),保證了方案的可行性,并且提升了方案的可操作性。
可選地,在上述圖6以及圖6對應(yīng)的第一至第三個實施例中任一項的基礎(chǔ)上,本發(fā)明實施例提供的遠程調(diào)試的方法第三個可選實施例中,根據(jù)每個客戶端的身份,向每個客戶端代理發(fā)送對應(yīng)的待調(diào)試業(yè)務(wù)數(shù)據(jù)之前,還可以包括:
若檢測到初始調(diào)試請求,則獲取第二端口所對應(yīng)的每個客戶端的身份與客戶端識別標識的關(guān)聯(lián)關(guān)系。
本實施例中,在服務(wù)器中的處理器與服務(wù)器代理之間建立了TCP連接后,如果處理器接收到客戶端代理發(fā)出的Xdebug初始調(diào)試請求,則處理器與服務(wù)器代理的也建立TCP連接。
Xdebug初始調(diào)試請求中攜帶了Xdebug的標識,例如XDEBUG_SESSION=idekey,或者其他的標識,此處不作限定。
服務(wù)器代理收到Xdebug初始調(diào)試請求,然后解析該請求后可以通過第二端口與處理器的第二端口建立TCP連接,同時,獲取到第二端口所對應(yīng)的每個客戶端的身份與客戶端識別標識的關(guān)聯(lián)關(guān)系。例如,客戶端識別標識1對應(yīng)的是客戶端A,客戶端識別標識2對應(yīng)的客戶端B,以此類推。得知它們之間的聯(lián)系后,便能根據(jù)該聯(lián)系之間確定處理器與服務(wù)器代理之間的數(shù)據(jù)傳輸目的地。
進一步地,本發(fā)明實施例中,服務(wù)器在檢測到初始調(diào)試請求,則獲取第二端口所對應(yīng)的每個客戶端的身份與客戶端識別標識的關(guān)聯(lián)關(guān)系。從而使得服務(wù)器內(nèi)部的服務(wù)器代理和處理器之間在進行數(shù)據(jù)傳輸時也能準確地識別數(shù)據(jù)傳輸?shù)哪康牡?,以此提升方案的可行性?/p>
為便于理解,下面可以以一個具體應(yīng)用場景對本發(fā)明中服務(wù)器代理的工作流程過程進行詳細描述,請參閱圖7,圖7為本發(fā)明實施例中服務(wù)器代理的工作流程示意圖,具體為:
步驟601,在客戶端代理與服務(wù)器代理進行通信連接后,服務(wù)器代理可以接收客戶端代理發(fā)送的數(shù)據(jù),該數(shù)據(jù)的類型可以是用于注冊idekey的數(shù)據(jù),也可以使直接發(fā)出的調(diào)試數(shù)據(jù);
步驟602,當(dāng)服務(wù)器代理根據(jù)接收到的數(shù)據(jù)類型,判斷是否為注冊idekey的請求,如果是,則進入步驟603,否則則跳轉(zhuǎn)至步驟604。其中,注冊idekey請求可以與客戶端代理約定一個字符串即可,如proxy init idekey=”myidekey”,通過正則表達式匹配驗證,如match(/proxy init idekey=\”(\w+)\”/);
步驟603,如果是注冊idekey的請求,則提取idekey信息并保存到客戶端套接字clientSocket數(shù)組與socket.idekey屬性中。其中,clientSocket數(shù)組用于負責(zé)接收服務(wù)器代理發(fā)送的連接請求,socket.idekey屬性則是說明數(shù)據(jù)接收的對象;
步驟604,如果不是注冊idekey的請求,則根據(jù)socket.idekey屬性找到對應(yīng)的PHP,即服務(wù)器中的處理器,直接將調(diào)試數(shù)據(jù)透傳至PHP中;
步驟605,PHP接收調(diào)試數(shù)據(jù),并且經(jīng)過調(diào)試得到業(yè)務(wù)調(diào)試數(shù)據(jù);
步驟606,服務(wù)器代理檢測是否收到Xdebug初始調(diào)試請求,同樣可以通過正則表達式進行匹配驗證,如match(/<init.*idekey=\”(\w+)\”/);
步驟607,如果接收到Xdebug初始調(diào)試請求,則提取idekey信息并保存到服務(wù)器套接字serverSocket數(shù)組與socket.idekey屬性中。其中,serverSocket數(shù)組用于負責(zé)接收客戶端代理發(fā)送的連接請求,并且可以多線程來處理與多個客戶端代理的的通信任務(wù),socket.idekey屬性則是指示數(shù)據(jù)接收對象;
步驟608,如果沒有收到Xdebug初始調(diào)試請求,則將所有來自PHP的數(shù)據(jù)均根據(jù)socket.idekey屬性,找到對應(yīng)的客戶端代理,調(diào)試連接后轉(zhuǎn)發(fā)業(yè)務(wù)調(diào)試數(shù)據(jù)。
為便于理解,下面可以以一個具體應(yīng)用場景對本發(fā)明中遠程調(diào)試的過程進行詳細描述,請參閱圖8,圖8為應(yīng)用場景中跨防火墻遠程調(diào)試的流程示意圖,具體為:
步驟701,啟動服務(wù)器代理,開始監(jiān)聽9000端口和8080端口是否收到TCP連接請求;
步驟702,啟動開發(fā)機代理,向服務(wù)器代理的8080端口發(fā)起TCP連接請求,連接成功后開發(fā)機代理發(fā)送注冊idekey請求,服務(wù)器代理識別出idekey的信息并與當(dāng)前TCP連接關(guān)聯(lián),并且實時傳輸數(shù)據(jù);
步驟703,本地開發(fā)機的IDE開始監(jiān)聽9000端口的TCP連接請求;
步驟704,本地開發(fā)機通過瀏覽器訪問待調(diào)試的php請求,并帶上Xdebug標識(XDEBUG_SESSION=idekey);
步驟705,PHP服務(wù)器收到請求后,PHP向服務(wù)器代理的9000端口發(fā)起TCP連接請求,連接成功后PHP發(fā)送Xdebug初始調(diào)試請求,服務(wù)器代理識別出idekey并當(dāng)前TCP連接關(guān)聯(lián),同時可以根據(jù)idekey找到開發(fā)機代理對應(yīng)的TCP連接,并向開發(fā)機代理轉(zhuǎn)發(fā)來自PHP的調(diào)試數(shù)據(jù);
步驟706,開發(fā)機代理識別到Xdebug初始調(diào)試請求,向IDE的9000端口發(fā)起TCP連接請求,連接成功后向IDE轉(zhuǎn)發(fā)來自服務(wù)器代理的調(diào)試數(shù)據(jù);
步驟707,IDE收到開發(fā)機代理的Xdebug初始調(diào)試請求,開始進行調(diào)試,調(diào)試過程中IDE的請求通過開發(fā)機代理轉(zhuǎn)發(fā)到服務(wù)器代理,再由服務(wù)器代理轉(zhuǎn)發(fā)到PHP,服務(wù)器代理通過idekey識別不同用戶可以實現(xiàn)多人并行調(diào)試。
下面對本發(fā)明中的客戶端代理進行詳細描述,請參閱圖9,本發(fā)明實施例中的客戶端代理部署于客戶端,所述客戶端應(yīng)用于遠程調(diào)試的系統(tǒng),所述系統(tǒng)還包括服務(wù)器,所述服務(wù)器中部署服務(wù)器代理,所述客戶端代理包括:
第一發(fā)送模塊801,用于向所述服務(wù)器代理發(fā)送客戶端識別標識;
第一接收模塊802,用于當(dāng)所述服務(wù)器代理根據(jù)所述第一發(fā)送模塊801發(fā)送的所述客戶端識別標識確定客戶端身份時,接收所述服務(wù)器代理發(fā)送的待調(diào)試業(yè)務(wù)數(shù)據(jù);
第二發(fā)送模塊803,用于將所述第一接收模塊802接收的所述待調(diào)試業(yè)務(wù)數(shù)據(jù)發(fā)送至所述客戶端中的集成開發(fā)環(huán)境IDE,所述待調(diào)試業(yè)務(wù)數(shù)據(jù)用于所述IDE進行調(diào)試,并得到業(yè)務(wù)調(diào)試數(shù)據(jù);
第二接收模塊804,用于接收所述IDE發(fā)送的所述業(yè)務(wù)調(diào)試數(shù)據(jù);
第三發(fā)送模塊805,用于將所述第二接收模塊804接收的所述業(yè)務(wù)調(diào)試數(shù)據(jù)發(fā)送至所述服務(wù)器代理,所述業(yè)務(wù)調(diào)試數(shù)據(jù)用于所述服務(wù)器進行業(yè)務(wù)調(diào)試。
本實施例中,第一發(fā)送模塊801向所述服務(wù)器代理發(fā)送客戶端識別標識,當(dāng)所述服務(wù)器代理根據(jù)所述第一發(fā)送模塊發(fā)送的所述客戶端識別標識確定客戶端身份時,第一接收模塊802接收所述服務(wù)器代理發(fā)送的待調(diào)試業(yè)務(wù)數(shù)據(jù);第二發(fā)送模塊803,用于將所述第一接收模塊接收的所述待調(diào)試業(yè)務(wù)數(shù)據(jù)發(fā)送至所述客戶端中的集成開發(fā)環(huán)境IDE,所述待調(diào)試業(yè)務(wù)數(shù)據(jù)用于所述IDE進行調(diào)試,并得到業(yè)務(wù)調(diào)試數(shù)據(jù),第二接收模塊804接收所述IDE發(fā)送的所述業(yè)務(wù)調(diào)試數(shù)據(jù),第三發(fā)送模塊805將所述第二接收模塊接收的所述業(yè)務(wù)調(diào)試數(shù)據(jù)發(fā)送至所述服務(wù)器代理,所述業(yè)務(wù)調(diào)試數(shù)據(jù)用于所述服務(wù)器進行業(yè)務(wù)調(diào)試。
本發(fā)明實施例中,提供了一種遠程調(diào)試的方法,在客戶端與服務(wù)器中分別部署代理。由于是客戶端代理主動向服務(wù)器代理發(fā)送客戶端識別標識,從而繞開了客戶端側(cè)的防火墻限制,從而實現(xiàn)在防火墻安全策略限制的情況下仍可以進行遠程調(diào)試。
可選地,在上述圖9所對應(yīng)的實施例的基礎(chǔ)上,請參閱圖10,本發(fā)明實施例提供的客戶端代理的另一實施例中,
所述第一發(fā)送模塊801包括:
第一發(fā)送單元8011,用于通過所述服務(wù)器代理的第一端口向所述服務(wù)器代理發(fā)送第一傳輸控制協(xié)議TCP連接請求;
第二發(fā)送單元8012,用于當(dāng)根據(jù)所述第一發(fā)送單元8011發(fā)送的所述第一TCP連接請求建立數(shù)據(jù)傳輸通道時,通過所述數(shù)據(jù)傳輸通道向所述服務(wù)器代理發(fā)送所述客戶端識別標識。
其次,本發(fā)明實施例中,客戶端代理具體可以通過向服務(wù)器代理的第一端口向服務(wù)器代理發(fā)送第一TCP連接請求,來建立與服務(wù)器代理的數(shù)據(jù)傳輸通道,并且通過數(shù)據(jù)傳輸通道向服務(wù)器代理發(fā)送客戶端識別標識。通過上述方式可以有效地建立起客戶端代理與服務(wù)器代理之間的連接,避開了防火墻的限制,由此增強了方案的實用性。
可選地,在上述圖9所對應(yīng)的實施例的基礎(chǔ)上,請參閱圖11,本發(fā)明實施例提供的客戶端代理的另一實施例中,
所述客戶端代理80還包括:
判斷模塊806,用于所述第二接收模塊804接收所述IDE發(fā)送的所述業(yè)務(wù)調(diào)試數(shù)據(jù)之前,判斷是否接收到初始調(diào)試請求;
建立模塊807,用于若所述判斷模塊806判斷得到接收到所述初始調(diào)試請求,則與所述IDE建立TCP連接通道,并通過所述TCP連接通道向所述IDE發(fā)送所述待調(diào)試業(yè)務(wù)數(shù)據(jù);
透傳模塊808,用于若所述判斷模塊806判斷得到未接收到所述初始調(diào)試請求,則向所述IDE透傳所述待調(diào)試業(yè)務(wù)數(shù)據(jù)。
其次,本發(fā)明實施例中,說明了若是需要IDE對待調(diào)試業(yè)務(wù)數(shù)據(jù)進行調(diào)試處理,還需要接收初始調(diào)試請求,以此可以防止對所有待調(diào)試業(yè)務(wù)數(shù)據(jù)都進行調(diào)試的情況,節(jié)省調(diào)試和計算資源,只針對服務(wù)器側(cè)進行Xdebug調(diào)試的數(shù)據(jù)進行處理。
可選地,在上述圖11所對應(yīng)的實施例的基礎(chǔ)上,請參閱圖12,本發(fā)明實施例提供的客戶端代理的另一實施例中,
所述建立模塊807包括:
緩存單元8071,用于根據(jù)所述初始調(diào)試請求,緩存所述待調(diào)試業(yè)務(wù)數(shù)據(jù);
第三發(fā)送單元8072,用于通過所述IDE代理的第二端口向所述IDE發(fā)送第二TCP連接請求;
第四發(fā)送單元8073,用于當(dāng)所述IDE響應(yīng)所述第三發(fā)送單元8072發(fā)送的所述第二TCP連接請求時,向所述IDE發(fā)送所述緩存單元8071緩存的所述待調(diào)試業(yè)務(wù)數(shù)據(jù)。
再次,本發(fā)明實施例中,客戶端代理可以進一步緩存待調(diào)試業(yè)務(wù)數(shù)據(jù),緩存的運行速度比內(nèi)存快得多,故緩存的作用就是幫助硬件更快地運行,以此提升方案是使用效率。以外,客戶端代理具體可以通過向IDE的第二端口發(fā)送第二TCP連接請求,來建立與IDE的數(shù)據(jù)傳輸通道,有效地建立起客戶端代理與IDE間的連接,增強了方案的實用性。
上面對本發(fā)明中的服務(wù)器代理進行介紹,下面將對本發(fā)明中的客戶端代理進行詳細描述,請參閱圖13,本發(fā)明實施例中的服務(wù)器代理部署于服務(wù)器,所述服務(wù)器應(yīng)用于遠程調(diào)試的系統(tǒng),所述系統(tǒng)還包括至少一個客戶端,在每個客戶端中部署客戶端代理,所述服務(wù)器代理包括:
第一接收模塊901,用于接收至少一個客戶端代理發(fā)送的客戶端識別標識;
確定模塊902,用于根據(jù)所述第一接收模塊901接收的所述客戶端識別標識確定每個客戶端的身份;
第一發(fā)送模塊903,用于根據(jù)所述確定模塊902確定的所述每個客戶端的身份,向每個客戶端代理發(fā)送對應(yīng)的待調(diào)試業(yè)務(wù)數(shù)據(jù),所述待調(diào)試業(yè)務(wù)數(shù)據(jù)用于所述客戶端中的集成開發(fā)環(huán)境IDE進行調(diào)試,并得到業(yè)務(wù)調(diào)試數(shù)據(jù);
第二接收模塊904,用于接收所述每個客戶端代理發(fā)送的所述業(yè)務(wù)調(diào)試數(shù)據(jù),所述業(yè)務(wù)調(diào)試數(shù)據(jù)用于所述服務(wù)器進行業(yè)務(wù)調(diào)試。
本實施例中,第一接收模塊901接收至少一個客戶端代理發(fā)送的客戶端識別標識,確定模塊902根據(jù)所述第一接收模塊901接收的所述客戶端識別標識確定每個客戶端的身份,第一發(fā)送模塊903根據(jù)所述確定模塊902確定的所述每個客戶端的身份,向每個客戶端代理發(fā)送對應(yīng)的待調(diào)試業(yè)務(wù)數(shù)據(jù),所述待調(diào)試業(yè)務(wù)數(shù)據(jù)用于所述客戶端中的集成開發(fā)環(huán)境IDE進行調(diào)試,并得到業(yè)務(wù)調(diào)試數(shù)據(jù),第二接收模塊904,用于接收所述每個客戶端代理發(fā)送的所述業(yè)務(wù)調(diào)試數(shù)據(jù),所述業(yè)務(wù)調(diào)試數(shù)據(jù)用于所述服務(wù)器進行業(yè)務(wù)調(diào)試。
本發(fā)明實施例中,提供了一種遠程調(diào)試的方法,在客戶端與服務(wù)器中分別部署代理。由于是客戶端代理主動向服務(wù)器代理發(fā)送客戶端識別標識,從而繞開了客戶端側(cè)的防火墻限制,從而實現(xiàn)在防火墻安全策略限制的情況下仍可以進行遠程調(diào)試。
可選地,在上述圖13所對應(yīng)的實施例的基礎(chǔ)上,請參閱圖14,本發(fā)明實施例提供的客戶端代理的另一實施例中,
所述第一接收模塊901包括:
監(jiān)聽單元9011,用于監(jiān)聽所述服務(wù)器代理的第一端口是否接收到所述至少一個客戶端代理發(fā)送的第一傳輸控制協(xié)議TCP連接請求;
接收單元9012,用于若所述監(jiān)聽單元9011監(jiān)聽到所述第一TCP連接請求,則接收所述至少一個客戶端代理發(fā)送的所述客戶端識別標識。
其次,本發(fā)明實施例中,服務(wù)器代理具體可以通過監(jiān)聽服務(wù)器代理的第一端口,來確定是否接收到至少一個客戶端代理發(fā)送的第一TCP連接請求,若監(jiān)聽到第一TCP連接請求,則接收至少一個客戶端代理發(fā)送的客戶端識別標識。通過上述方式可以有效地建立起客戶端代理與服務(wù)器代理之間的連接,避開了防火墻的限制,由此增強了方案的實用性。
可選地,在上述圖13所對應(yīng)的實施例的基礎(chǔ)上,請參閱圖15,本發(fā)明實施例提供的客戶端代理的另一實施例中,
所述服務(wù)器代理90還包括:
第三接收模塊905,用于所述第一接收模塊901接收至少一個客戶端代理發(fā)送的客戶端識別標識之前,接收所述至少一個客戶端代理發(fā)送的數(shù)據(jù)處理請求;
第一獲取模塊906,用于若所述第三接收模塊905接收到的所述數(shù)據(jù)處理請求為標識注冊請求,則獲取所述第一端口所對應(yīng)的所述每個客戶端的身份與所述客戶端識別標識的關(guān)聯(lián)關(guān)系;
第二發(fā)送模塊907,用于若所述第三接收模塊905接收到的所述數(shù)據(jù)處理請求為數(shù)據(jù)調(diào)試請求,則向所述服務(wù)器中的處理器發(fā)送數(shù)據(jù)調(diào)試請求,所述數(shù)據(jù)調(diào)試請求用于所述處理器生成所述待調(diào)試業(yè)務(wù)數(shù)據(jù)。
其次,本發(fā)明實施例中,服務(wù)器可以對接收的數(shù)據(jù)處理請求進行確定,若數(shù)據(jù)處理請求為標識注冊請求,則獲取第一端口所對應(yīng)的每個客戶端的身份與客戶端識別標識的關(guān)聯(lián)關(guān)系,若數(shù)據(jù)處理請求為數(shù)據(jù)調(diào)試請求,則向服務(wù)器中的處理器發(fā)送數(shù)據(jù)調(diào)試請求。通過上述方式,服務(wù)器可以更準確地識別客戶端側(cè)發(fā)送的請求,并作出相應(yīng)回應(yīng),以此提升方案的可行性。
可選地,在上述圖15所對應(yīng)的實施例的基礎(chǔ)上,請參閱圖16,本發(fā)明實施例提供的客戶端代理的另一實施例中,
所述第二發(fā)送模塊907還包括:
第一發(fā)送單元9071,用于通過第二端口向所述處理器的第二端口發(fā)送第二TCP連接請求;
第二發(fā)送單元9072,用于當(dāng)根據(jù)所述第一發(fā)送單元9071發(fā)送的所述第二TCP連接請求建立數(shù)據(jù)傳輸通道時,通過所述數(shù)據(jù)傳輸通道向所述處理器發(fā)送數(shù)據(jù)調(diào)試請求。
再次,本發(fā)明實施例中,在服務(wù)器中建立服務(wù)器代理與處理之間的數(shù)據(jù)連接通道,以此可以順利收發(fā)數(shù)據(jù),保證了方案的可行性,并且提升了方案的可操作性。
可選地,在上述圖13至16中任一項所對應(yīng)的實施例的基礎(chǔ)上,請參閱圖17,本發(fā)明實施例提供的客戶端代理的另一實施例中,
所述服務(wù)器代理90還包括:
第二獲取模塊908,用于所述第一發(fā)送模塊903根據(jù)所述每個客戶端的身份,向每個客戶端代理發(fā)送對應(yīng)的待調(diào)試業(yè)務(wù)數(shù)據(jù)之前,若檢測到初始調(diào)試請求,則獲取所述第二端口所對應(yīng)的所述每個客戶端的身份與所述客戶端識別標識的關(guān)聯(lián)關(guān)系。
進一步地,本發(fā)明實施例中,服務(wù)器在檢測到初始調(diào)試請求,則獲取第二端口所對應(yīng)的每個客戶端的身份與客戶端識別標識的關(guān)聯(lián)關(guān)系。從而使得服務(wù)器內(nèi)部的服務(wù)器代理和處理器之間在進行數(shù)據(jù)傳輸時也能準確地識別數(shù)據(jù)傳輸?shù)哪康牡?,以此提升方案的可行性?/p>
本發(fā)明實施例還提供了另一種客戶端,其中,客戶端代理中包括了客戶端代理,如圖18所示,為了便于說明,僅示出了與本發(fā)明實施例相關(guān)的部分,具體技術(shù)細節(jié)未揭示的,請參照本發(fā)明實施例方法部分。該終端可以為包括手機、平板電腦、個人數(shù)字助理(英文全稱:Personal Digital Assistant,英文縮寫:PDA)、銷售終端(英文全稱:Point of Sales,英文縮寫:POS)、車載電腦等任意終端設(shè)備,以終端為手機為例:
圖18示出的是與本發(fā)明實施例提供的終端相關(guān)的手機的部分結(jié)構(gòu)的框圖。參考圖18,手機包括:射頻(英文全稱:Radio Frequency,英文縮寫:RF)電路1010、存儲器1020、輸入單元1030、顯示單元1040、傳感器1050、音頻電路1060、無線保真(英文全稱:wireless fidelity,英文縮寫:WiFi)模塊1070、處理器1080、以及電源1090等部件。本領(lǐng)域技術(shù)人員可以理解,圖18中示出的手機結(jié)構(gòu)并不構(gòu)成對手機的限定,可以包括比圖示更多或更少的部件,或者組合某些部件,或者不同的部件布置。
下面結(jié)合圖18對手機的各個構(gòu)成部件進行具體的介紹:
RF電路1010可用于收發(fā)信息或通話過程中,信號的接收和發(fā)送,特別地,將基站的下行信息接收后,給處理器1080處理;另外,將設(shè)計上行的數(shù)據(jù)發(fā)送給基站。通常,RF電路1010包括但不限于天線、至少一個放大器、收發(fā)信機、耦合器、低噪聲放大器(英文全稱:Low Noise Amplifier,英文縮寫:LNA)、雙工器等。此外,RF電路1010還可以通過無線通信與網(wǎng)絡(luò)和其他設(shè)備通信。上述無線通信可以使用任一通信標準或協(xié)議,包括但不限于全球移動通訊系統(tǒng)(英文全稱:Global System of Mobile communication,英文縮寫:GSM)、通用分組無線服務(wù)(英文全稱:General Packet Radio Service,英文縮寫:GPRS)、碼分多址(英文全稱:Code Division Multiple Access,英文縮寫:CDMA)、寬帶碼分多址(英文全稱:Wideband Code Division Multiple Access,英文縮寫:WCDMA)、長期演進(英文全稱:Long Term Evolution,英文縮寫:LTE)、電子郵件、短消息服務(wù)(英文全稱:Short Messaging Service,英文縮寫:SMS)等。
存儲器1020可用于存儲軟件程序以及模塊,處理器1080通過運行存儲在存儲器1020的軟件程序以及模塊,從而執(zhí)行手機的各種功能應(yīng)用以及數(shù)據(jù)處理。存儲器1020可主要包括存儲程序區(qū)和存儲數(shù)據(jù)區(qū),其中,存儲程序區(qū)可存儲操作系統(tǒng)、至少一個功能所需的應(yīng)用程序(比如聲音播放功能、圖像播放功能等)等;存儲數(shù)據(jù)區(qū)可存儲根據(jù)手機的使用所創(chuàng)建的數(shù)據(jù)(比如音頻數(shù)據(jù)、電話本等)等。此外,存儲器1020可以包括高速隨機存取存儲器,還可以包括非易失性存儲器,例如至少一個磁盤存儲器件、閃存器件、或其他易失性固態(tài)存儲器件。
輸入單元1030可用于接收輸入的數(shù)字或字符信息,以及產(chǎn)生與手機的用戶設(shè)置以及功能控制有關(guān)的鍵信號輸入。具體地,輸入單元1030可包括觸控面板1031以及其他輸入設(shè)備1032。觸控面板1031,也稱為觸摸屏,可收集用戶在其上或附近的觸摸操作(比如用戶使用手指、觸筆等任何適合的物體或附件在觸控面板1031上或在觸控面板1031附近的操作),并根據(jù)預(yù)先設(shè)定的程式驅(qū)動相應(yīng)的連接裝置??蛇x的,觸控面板1031可包括觸摸檢測裝置和觸摸控制器兩個部分。其中,觸摸檢測裝置檢測用戶的觸摸方位,并檢測觸摸操作帶來的信號,將信號傳送給觸摸控制器;觸摸控制器從觸摸檢測裝置上接收觸摸信息,并將它轉(zhuǎn)換成觸點坐標,再送給處理器1080,并能接收處理器1080發(fā)來的命令并加以執(zhí)行。此外,可以采用電阻式、電容式、紅外線以及表面聲波等多種類型實現(xiàn)觸控面板1031。除了觸控面板1031,輸入單元1030還可以包括其他輸入設(shè)備1032。具體地,其他輸入設(shè)備1032可以包括但不限于物理鍵盤、功能鍵(比如音量控制按鍵、開關(guān)按鍵等)、軌跡球、鼠標、操作桿等中的一種或多種。
顯示單元1040可用于顯示由用戶輸入的信息或提供給用戶的信息以及手機的各種菜單。顯示單元1040可包括顯示面板1041,可選的,可以采用液晶顯示器(英文全稱:Liquid Crystal Display,英文縮寫:LCD)、有機發(fā)光二極管(英文全稱:Organic Light-Emitting Diode,英文縮寫:OLED)等形式來配置顯示面板1041。進一步的,觸控面板1031可覆蓋顯示面板1041,當(dāng)觸控面板1031檢測到在其上或附近的觸摸操作后,傳送給處理器1080以確定觸摸事件的類型,隨后處理器1080根據(jù)觸摸事件的類型在顯示面板1041上提供相應(yīng)的視覺輸出。雖然在圖18中,觸控面板1031與顯示面板1041是作為兩個獨立的部件來實現(xiàn)手機的輸入和輸入功能,但是在某些實施例中,可以將觸控面板1031與顯示面板1041集成而實現(xiàn)手機的輸入和輸出功能。
手機還可包括至少一種傳感器1050,比如光傳感器、運動傳感器以及其他傳感器。具體地,光傳感器可包括環(huán)境光傳感器及接近傳感器,其中,環(huán)境光傳感器可根據(jù)環(huán)境光線的明暗來調(diào)節(jié)顯示面板1041的亮度,接近傳感器可在手機移動到耳邊時,關(guān)閉顯示面板1041和/或背光。作為運動傳感器的一種,加速計傳感器可檢測各個方向上(一般為三軸)加速度的大小,靜止時可檢測出重力的大小及方向,可用于識別手機姿態(tài)的應(yīng)用(比如橫豎屏切換、相關(guān)游戲、磁力計姿態(tài)校準)、振動識別相關(guān)功能(比如計步器、敲擊)等;至于手機還可配置的陀螺儀、氣壓計、濕度計、溫度計、紅外線傳感器等其他傳感器,在此不再贅述。
音頻電路1060、揚聲器1061,傳聲器1062可提供用戶與手機之間的音頻接口。音頻電路1060可將接收到的音頻數(shù)據(jù)轉(zhuǎn)換后的電信號,傳輸?shù)綋P聲器1061,由揚聲器1061轉(zhuǎn)換為聲音信號輸出;另一方面,傳聲器1062將收集的聲音信號轉(zhuǎn)換為電信號,由音頻電路1060接收后轉(zhuǎn)換為音頻數(shù)據(jù),再將音頻數(shù)據(jù)輸出處理器1080處理后,經(jīng)RF電路1010以發(fā)送給比如另一手機,或者將音頻數(shù)據(jù)輸出至存儲器1020以便進一步處理。
WiFi屬于短距離無線傳輸技術(shù),手機通過WiFi模塊1070可以幫助用戶收發(fā)電子郵件、瀏覽網(wǎng)頁和訪問流式媒體等,它為用戶提供了無線的寬帶互聯(lián)網(wǎng)訪問。雖然圖18示出了WiFi模塊1070,但是可以理解的是,其并不屬于手機的必須構(gòu)成,完全可以根據(jù)需要在不改變發(fā)明的本質(zhì)的范圍內(nèi)而省略。
處理器1080是手機的控制中心,利用各種接口和線路連接整個手機的各個部分,通過運行或執(zhí)行存儲在存儲器1020內(nèi)的軟件程序和/或模塊,以及調(diào)用存儲在存儲器1020內(nèi)的數(shù)據(jù),執(zhí)行手機的各種功能和處理數(shù)據(jù),從而對手機進行整體監(jiān)控。可選的,處理器1080可包括一個或多個處理單元;優(yōu)選的,處理器1080可集成應(yīng)用處理器和調(diào)制解調(diào)處理器,其中,應(yīng)用處理器主要處理操作系統(tǒng)、用戶界面和應(yīng)用程序等,調(diào)制解調(diào)處理器主要處理無線通信??梢岳斫獾氖牵鲜稣{(diào)制解調(diào)處理器也可以不集成到處理器1080中。
手機還包括給各個部件供電的電源1090(比如電池),優(yōu)選的,電源可以通過電源管理系統(tǒng)與處理器1080邏輯相連,從而通過電源管理系統(tǒng)實現(xiàn)管理充電、放電、以及功耗管理等功能。
盡管未示出,手機還可以包括攝像頭、藍牙模塊等,在此不再贅述。
在本發(fā)明實施例中,該終端所包括的處理器1080還具有以下功能:
向所述服務(wù)器代理發(fā)送客戶端識別標識;
當(dāng)所述服務(wù)器代理根據(jù)所述客戶端識別標識確定客戶端身份時,接收所述服務(wù)器代理發(fā)送的待調(diào)試業(yè)務(wù)數(shù)據(jù);
將所述待調(diào)試業(yè)務(wù)數(shù)據(jù)發(fā)送至所述客戶端中的集成開發(fā)環(huán)境IDE,所述待調(diào)試業(yè)務(wù)數(shù)據(jù)用于所述IDE進行調(diào)試,并得到業(yè)務(wù)調(diào)試數(shù)據(jù);
接收所述IDE發(fā)送的所述業(yè)務(wù)調(diào)試數(shù)據(jù);
將所述業(yè)務(wù)調(diào)試數(shù)據(jù)發(fā)送至所述服務(wù)器代理,所述業(yè)務(wù)調(diào)試數(shù)據(jù)用于所述服務(wù)器進行業(yè)務(wù)調(diào)試。
圖19是本發(fā)明實施例提供的一種服務(wù)器結(jié)構(gòu)示意圖,該服務(wù)器1100可因配置或性能不同而產(chǎn)生比較大的差異,服務(wù)器1100中包括了一個服務(wù)器代理。還可以包括一個或一個以上中央處理器(英文全稱:central processing units,英文縮寫:CPU)1122(例如,一個或一個以上處理器)和存儲器1132,一個或一個以上存儲應(yīng)用程序1142或數(shù)據(jù)1144的存儲介質(zhì)1130(例如一個或一個以上海量存儲設(shè)備)。其中,存儲器1132和存儲介質(zhì)1130可以是短暫存儲或持久存儲。存儲在存儲介質(zhì)1130的程序可以包括一個或一個以上模塊(圖示沒標出),每個模塊可以包括對服務(wù)器中的一系列指令操作。更進一步地,中央處理器1122可以設(shè)置為與存儲介質(zhì)1130通信,在服務(wù)器1100上執(zhí)行存儲介質(zhì)1130中的一系列指令操作。
服務(wù)器1100還可以包括一個或一個以上電源1126,一個或一個以上有線或無線網(wǎng)絡(luò)接口1150,一個或一個以上輸入輸出接口1158,和/或,一個或一個以上操作系統(tǒng)1141,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,F(xiàn)reeBSDTM等等。
上述實施例中由服務(wù)器所執(zhí)行的步驟可以基于該圖19所示的服務(wù)器結(jié)構(gòu)。
接收至少一個客戶端代理發(fā)送的客戶端識別標識;
根據(jù)所述客戶端識別標識確定每個客戶端的身份;
根據(jù)所述每個客戶端的身份,向每個客戶端代理發(fā)送對應(yīng)的待調(diào)試業(yè)務(wù)數(shù)據(jù),所述待調(diào)試業(yè)務(wù)數(shù)據(jù)用于所述客戶端中的集成開發(fā)環(huán)境IDE進行調(diào)試,并得到業(yè)務(wù)調(diào)試數(shù)據(jù);
接收所述每個客戶端代理發(fā)送的所述業(yè)務(wù)調(diào)試數(shù)據(jù),所述業(yè)務(wù)調(diào)試數(shù)據(jù)用于所述服務(wù)器進行業(yè)務(wù)調(diào)試。
請參閱圖20,圖20為本發(fā)明實施例中遠程調(diào)試的系統(tǒng)一個實施例示意圖,所述系統(tǒng)包括至少一個客戶端以及服務(wù)器,其中,在每個客戶端中部署客戶端代理1201,在所述服務(wù)器中部署服務(wù)器代理1202;
所述客戶端代理1201向所述服務(wù)器代理1202發(fā)送客戶端識別標識;
所述服務(wù)器代理1202根據(jù)所述客戶端識別標識確定每個客戶端的身份;
所述服務(wù)器代理1202根據(jù)所述每個客戶端的身份,向每個客戶端代理1201發(fā)送對應(yīng)的待調(diào)試業(yè)務(wù)數(shù)據(jù),
所述客戶端代理1201將所述待調(diào)試業(yè)務(wù)數(shù)據(jù)發(fā)送至所述客戶端中的集成開發(fā)環(huán)境IDE,所述待調(diào)試業(yè)務(wù)數(shù)據(jù)用于所述IDE進行調(diào)試,并得到業(yè)務(wù)調(diào)試數(shù)據(jù);
所述客戶端代理1201接收所述IDE發(fā)送的所述業(yè)務(wù)調(diào)試數(shù)據(jù);
所述客戶端代理1201將所述業(yè)務(wù)調(diào)試數(shù)據(jù)發(fā)送至所述服務(wù)器代理1202,所述業(yè)務(wù)調(diào)試數(shù)據(jù)用于所述服務(wù)器進行業(yè)務(wù)調(diào)試。
本發(fā)明實施例中,提供了一種遠程調(diào)試的方法,在客戶端與服務(wù)器中分別部署代理。由于是客戶端代理主動向服務(wù)器代理發(fā)送客戶端識別標識,從而繞開了客戶端側(cè)的防火墻限制,從而實現(xiàn)在防火墻安全策略限制的情況下仍可以進行遠程調(diào)試。
所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡潔,上述描述的系統(tǒng),裝置和單元的具體工作過程,可以參考前述方法實施例中的對應(yīng)過程,在此不再贅述。
在本申請所提供的幾個實施例中,應(yīng)該理解到,所揭露的系統(tǒng),裝置和方法,可以通過其它的方式實現(xiàn)。例如,以上所描述的裝置實施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式,例如多個單元或組件可以結(jié)合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機械或其它的形式。
所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上??梢愿鶕?jù)實際的需要選擇其中的部分或者全部單元來實現(xiàn)本實施例方案的目的。
另外,在本發(fā)明各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以采用硬件的形式實現(xiàn),也可以采用軟件功能單元的形式實現(xiàn)。
所述集成的單元如果以軟件功能單元的形式實現(xiàn)并作為獨立的產(chǎn)品銷售或使用時,可以存儲在一個計算機可讀取存儲介質(zhì)中?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品存儲在一個存儲介質(zhì)中,包括若干指令用以使得一臺計算機設(shè)備(可以是個人計算機,服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實施例所述方法的全部或部分步驟。而前述的存儲介質(zhì)包括:U盤、移動硬盤、只讀存儲器(英文全稱:Read-Only Memory,英文縮寫:ROM)、隨機存取存儲器(英文全稱:Random Access Memory,英文縮寫:RAM)、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
以上所述,以上實施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述實施例對本發(fā)明進行了詳細的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對前述各實施例所記載的技術(shù)方案進行修改,或者對其中部分技術(shù)特征進行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實施例技術(shù)方案的精神和范圍。