一種基于字節流的進程間通訊方法,將系統中的核心進程創建為UnixSocket的服務器端,用于總體接收、協調、發送系統中各個進程產生的通信需求;將系統中的單個子進程創建為UnixSocket的客戶端;所述的客戶端作為發送進程時,首先對待發送的信息包進行字節化處理,然后通過和服務器建立的鏈接將信息包推送到核心進程;由核心進程根據信息字節流的字節長度、信息目的及信息體,將該信息包發送至目的進程中。本發明專利技術實現了消息的集中管理。另外,過程中對于不同的進程可能存在的狀態有:就緒、死亡、等待等不同的運行狀態。服務器對暫時不能送達的消息進行保存,等待客戶端進入運行狀態后將信息進行推送,實現了離線信息保存的功能。
【技術實現步驟摘要】
本專利技術涉及一種多進程間的通信技術。
技術介紹
目前,Socket通訊技術在Linux中得到最廣泛的應用。原有的IPC通訊技術在很大程度上逐漸退出開發舞臺,尤其是Java技術的興起更使的情況更為微妙。使得Socket優勢逐步凸顯,占據整個軟件開發應用領域的絕對主流地位。其設計和應用思想,更加符合人們的開發習慣。另外基于系統自身的Unix Socket通訊更是得到了最廣泛的認可。主流的數據庫、圖形界面等都基于這種途徑進行使用。
技術實現思路
本專利技術的目的在于A :實現基于Unix Socket的多進程通訊,實現關聯進程間的信息。B:實現所有消息的集中管理,即所有的消息都經過中心。中心對消息的最終目的進行選擇,并對消息的類型進行過濾。C :實現消息的離線保存,當消息的接收方上線后再發送該消息給接收者。為實現上述目的,本專利技術采用以下技術方案 本專利技術將系統中的核心進程創建為Unix Socket的服務器端,用于總體接收、協調、發送系統中各個進程產生的通信需求;將系統中的單個子進程創建為Unix Socket的客戶端;所述的客戶端作為發送進程時,首先對待發送的信息包進行字節化處理,然后通過和服務器建立的鏈接將信息包推送到核心進程;由核心進程根據信息字節流的字節長度、信息目的及信息體,將該信息包發送至目的進程中。所述的目的進程接收到信息包后,首先判斷是否屬于自己的信息包;若屬于該目的進程的信息包,則發送回復信息,所述的回復信息先通過字節化處理后被推送到核心進程,再由核心進程轉發給發送進程;若不屬于該目的進程的信息包,則將該信息包推送給服務器。所述發送進程將信息包推送給服務器后,服務器搜索不到該信息包的目的進程時,服務器對該信息包進行保存;直至服務器搜索到目的進程后,將該信息包推送下去。服務器搜索超時后,服務器仍然搜索不到信息包的目的進程,則拋棄該信息包。采用上述技術方案的本專利技術,將系統中的核心進程創建為Unix Socket的服務器端,將系統中的單個子進程創建為Unix Socket的客戶端,由服務器端實現對客戶端信息接收和對目的Client信息的發送。其中反向的客戶端對處理結果的返回使用同樣流程,從而實現了消息的集中管理。另外,過程中對于不同的進程可能存在的狀態有就緒、死亡、等待等不同的運行狀態。服務器對暫時不能送達的消息進行保存,等待客戶端進入運行狀態后將信息進行推送,實現了離線信息保存的功能。附圖說明圖I為本專利技術的通信流程圖。具體實施例方式本專利技術的核心思想在于將系統中的核心進程創建為Unix Socket的服務器端,用于總體接收、協調、發送系統中各個進程產生的通信需求;將系統中的單個子進程創建為Unix Socket的客戶端。客戶端作為發送進程時,首先對待發送的信息包進行字節化處理,然后通過和服務器建立的鏈接將信息包推送到核心進程;由核心進程根據信息字節流的字節長度、信息目的及信息體,將該信息包發送至目的進程中。如圖I所示,本專利技術主要分為一下幾大部分通訊的建立、消息的組織與發送、月艮務端消息接收分析與轉發、服務端消息的保存、客戶端消息的接收。通訊的建立服務器端綁定建立一個以sock path標識的Unix Socket的服務端, 客戶端建立這個Unix Socket的客戶端。客戶端接入服務端,完成通訊的建立服務器為接入的客戶端分配唯一的id。客戶端在和服務斷開連接后,客戶端接入的這個過程需要重新進行。同樣服務在異常后也需要重新進行服務的這個流程。消息的組織與發送發送進程將待發送的消息打上標簽,然后附上消息內容。即在消息的頭部增加消息的目的id、接收id,協議的版本、類型及數據長度。因為整體的消息是按照字節流發送的,所以必須要有數據長度。其中,使用的id為客戶端接入服務時分配的id。服務端消息接收分析與轉發服務端接收到消息后,首先根據數據長度獲取完整的通訊消息。然后根據消息的類型識別消息的處理流程。最好根據目的id判斷該消息是否進入保存流程或者直接進行發送。服務端消息的保存服務端在進行數據發送前,先根據通訊消息攜帶的目的id搜索該消息的目的進程。如果找不到目的進程,或者目的進程不在線,就認為這是一條需要保存的消息,等待該目的進程的設備上線后將該消息推送下去。如果超時后該目的進程還沒有上線,就拋棄該消息。消息的最大保留條目為IOByte或者IKB內容。客戶端消息的接收目的進程根據通訊消息的長度,對消息進行完整接收后。對目的id進行比對,如果是自己的消息就處理。如果非自己的消息重新將消息推送會服務器端。權利要求1.,其特征在于將系統中的核心進程創建為UniXSocket的服務器端,用于總體接收、協調、發送系統中各個進程產生的通信需求;將系統中的單個子進程創建為Unix Socket的客戶端;所述的客戶端作為發送進程時,首先對待發送的信息包進行字節化處理,然后通過和服務器建立的鏈接將信息包推送到核心進程;由核心進程根據信息字節流的字節長度、信息目的及信息體,將該信息包發送至目的進程中。2.根據權利要求I所述的基于字節流的進程間通訊方法,其特征在于所述的目的進程接收到信息包后,首先判斷是否屬于自己的信息包;若屬于該目的進程的信息包,則發送回復信息,所述的回復信息先通過字節化處理后被推送到核心進程,再由核心進程轉發給發送進程;若不屬于該目的進程的信息包,則將該信息包推送給服務器。3.根據權利要求I所述的基于字節流的進程間通訊方法,其特征在于所述發送進程將信息包推送給服務器后,服務器搜索不到該信息包的目的進程時,服務器對該信息包進行保存;直至服務器搜索到目的進程后,將該信息包推送下去。4.根據權利要求3所述的基于字節流的進程間通訊方法,其特征在于服務器搜索超時后,服務器仍然搜索不到信息包的目的進程,則拋棄該信息包。全文摘要,將系統中的核心進程創建為UnixSocket的服務器端,用于總體接收、協調、發送系統中各個進程產生的通信需求;將系統中的單個子進程創建為UnixSocket的客戶端;所述的客戶端作為發送進程時,首先對待發送的信息包進行字節化處理,然后通過和服務器建立的鏈接將信息包推送到核心進程;由核心進程根據信息字節流的字節長度、信息目的及信息體,將該信息包發送至目的進程中。本專利技術實現了消息的集中管理。另外,過程中對于不同的進程可能存在的狀態有就緒、死亡、等待等不同的運行狀態。服務器對暫時不能送達的消息進行保存,等待客戶端進入運行狀態后將信息進行推送,實現了離線信息保存的功能。文檔編號G06F9/54GK102890644SQ20111020275公開日2013年1月23日 申請日期2011年7月20日 優先權日2011年7月20日專利技術者賈小波, 嚴濤, 惠作奎, 李偉, 陳啟航, 張曉飛 申請人:鄭州威科姆科技股份有限公司本文檔來自技高網...
【技術保護點】
一種基于字節流的進程間通訊方法,其特征在于:將系統中的核心進程創建為Unix?Socket的服務器端,用于總體接收、協調、發送系統中各個進程產生的通信需求;將系統中的單個子進程創建為Unix?Socket的客戶端;所述的客戶端作為發送進程時,首先對待發送的信息包進行字節化處理,然后通過和服務器建立的鏈接將信息包推送到核心進程;由核心進程根據信息字節流的字節長度、信息目的及信息體,將該信息包發送至目的進程中。
【技術特征摘要】
【專利技術屬性】
技術研發人員:賈小波,嚴濤,惠作奎,李偉,陳啟航,張曉飛,
申請(專利權)人:鄭州威科姆科技股份有限公司,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。