進程間通信方法及系統與流程
2023-05-08 20:26:36
本發明涉及信息傳輸技術領域,特別是涉及一種進程間通信方法及系統。
背景技術:
進程間通信(ipc,inter-processcommunication)指至少兩個進程或線程間傳送數據或信號的一些技術或方法。進程是計算機系統分配資源的最小單位。每個進程都有自己的一部分獨立的系統資源,彼此是隔離的。為了能使不同的進程互相訪問資源並進行協調工作,才有了進程間通信。
進程可以運行在同一計算機上或網絡連接的不同計算機上。每個進程被賦予它自己的虛擬地址空間,當進程中的一個線程正在運行時,該線程可以訪問只屬於它的進程的內存。而進程的用戶空間是互相獨立的,屬於其它進程的內存則是隱藏的,並不能訪問到其他的進程的信息。
現有的一種進程間通信方法,通過消息窗口的方式進行進程間通信,僅適用於採用windows作業系統的平臺間進行進程間通信,無法在不同作業系統環境下的進程間進行通信。
技術實現要素:
本發明實施例解決的技術問題是如何實現不同作業系統環境下的進程間的通信。
為解決上述問題,本發明實施例提供了一種進程間通信方法,包括:
服務端與客戶端建立連接;
當所述服務端與所述客戶端建立連接成功時,所述客戶端將待處理數據發送至所述客戶端;
所述服務端接收所述客戶端發送的待處理數據,對所述待處理數據進行處理,並將對應的數據處理結果發送至所述客戶端;
所述客戶端接收所述數據處理結果;
所述服務端與所述客戶端之間斷開連接。
可選地,所述服務端與所述客戶端建立連接,包括:
所述服務端對預設的監聽埠進行監聽,並當監聽到所述客戶端發送的連接請求時,所述服務端與所述客戶端建立連接。
可選地,所述對所述待處理數據進行處理,包括:採用預先註冊的回調函數對所述待處理數據進行處理。
可選地,所述服務端將所述數據處理結果發送至所述客戶端,包括:
所述服務端在確定所述回調函數的返回值為預設的第一數值時,將所述數據處理結果發送至所述客戶端。
本發明實施例還提供了一種進程間通信系統,包括服務端和客戶端;
所述服務端,適於與所述客戶端建立連接,並接收所述客戶端發送的待處理數據;對所述待處理數據進行處理,得到對應的數據結果並發送至所述客戶端;斷開與所述客戶端之間的連接;
所述客戶端,適於與所述服務端建立連接,並將待處理數據發送至所述服務端;接收所述服務端發送的數據處理結果;斷開與所述服務端之間的連接。
可選地,所述服務端,適於對預設的監聽埠進行監聽,並當監聽到所述客戶端發送的連接請求時,與所述客戶端建立連接。
可選地,所述服務端,適於採用預先註冊的回調函數對所述待處理數據進行處理。
可選地,所述服務端,適於在確定所述回調函數的返回值為預設的第一數值時,將所述數據處理結果發送至所述客戶端。
與現有技術相比,本發明的技術方案具有以下的優點:
上述的方案,通過服務端對客戶端發送的待處理數據進行處理,並將處理結果發送至所述客戶端,可以實現不同作業系統環境下的進程間的通信,滿足不同作業系統環境下的進程之間的通信需求。
進一步地,服務端採用預先註冊的回調函數對客戶端發送的數據進行處理,並將處理結果發送給客戶端,可以滿足客戶端對於數據的多樣化處理需求。
進一步地,當所述回調函數的返回值為預設的第一數值時,服務端將回調函數得到的數據處理結果發送至客戶端,否則,則無需將所得到的數據處理結果發送至客戶端,可以滿足進程間通信的多樣化需求。
附圖說明
圖1是本發明實施例中的一種進程間通信的方法的流程圖;
圖2是本發明實施例中的一種進程間通信系統的結構示意圖;
圖3是本發明實施例中的一種進程間通信的方法的流程圖。
具體實施方式
正如背景技術所言,現有技術中採用窗口消息進行進程間通信的方法僅適用於相同作業系統環境下進程間的通信,無法實現不同作業系統環境下進程間的通信。
為解決現有技術中存在的上述問題,本發明實施例採用的技術方案通過服務端對客戶端發送的待處理數據進行處理,並將處理結果發送至所述客戶端,可以實現不同作業系統環境下的進程間的通信。
為使本發明的上述目的、特徵和優點能夠更為明顯易懂,下面結合附圖對本發明的具體實施例做詳細的說明。
圖1示出了本發明實施例中的一種進程間通信的方法的流程圖。如圖1所示的進程間通信的方法,適於不同作業系統環境下的進程之間進行數據傳輸,具體可以包括如下的操作:
步驟s101:所述服務端與所述客戶端建立連接。
在具體實施中,所述服務端與所述客戶端具有不同的作業系統環境。
步驟s102:所述客戶端將待處理數據發送至客戶端。
在具體實施中,所述待處理數據為待服務端進程處理的數據。
步驟s103:所述服務端接收所述客戶端發送的待處理數據,並對所述待處理數據進行處理,並將對應的數據處理結果發送至所述客戶端。
步驟s104:所述客戶端接收所述數據處理結果。
步驟s105:所述服務端與所述客戶端之間斷開連接。
上述的方案,通過服務端對客戶端發送的待處理數據進行處理,並將處理結果發送至所述客戶端,可以實現不同作業系統環境下的進程間的通信,滿足不同作業系統環境下的進程之間的通信需求。
下面將對本發明實施例中的進程間通信方法進行進一步詳細的描述。
為了便於理解,下面首先對本發明實施例中的進程間通信系統進行介紹。
圖2示出了本發明實施例中的一種進程間通信系統的結構。參見圖2,本發明實施例中的一種進程間通信系統,可以包括相互耦接的服務端201和客戶端202。
下面將結合圖3對圖2所示的進程間通信系統的工作原理進行進一步詳細的介紹。
參見圖3,本發明實施例中的一種進程間通信的方法,適於不同作業系統環境下的服務端與客戶端之間進行信息交互,具體可以採用如下的步驟實現:
步驟s301:所述服務端指定監聽埠,並註冊回調函數。
在具體實施中,所述服務端具有預先設定的服務名。其中,服務端的服務名的設置方式為預先設定。
在具體實施中,回調函數可以對客戶端發送的數據進行相應的處理,並返回對應的處理結果。其中,回調函數可以採用不同的方式實現。在本發明一實施例中,回調函數可以採用函數指針的方式實現。在本發明另一實施例中,回調函數採用c++的虛函數方式實現。當然,本領域的一般技術人員也可以採用其他的方式實現回調函數,在此不做限制。
步驟s302:所述服務端對所述監聽埠進行監聽。
在具體實施中,當完成回調函數的註冊時,服務端啟動對應的監聽服務,以對預設的監聽埠進行監聽,以便及時地接收客戶端發送的數據。
在具體實施中,當採用預設的監聽埠監聽失敗時,表明所述服務端已存在其他的監聽對象。此時,服務端的進程將退出。
步驟s303:所述客戶端向所述服務端發送連接請求。
在具體實施中,客戶端可以在有數據需要進行處理時,向服務端發送對應的連接請求,以與服務端建立連接,並將待處理數據發送至服務端進行處理。具體而言,客戶端可以根據服務端的服務名的信息,找到對應的服務端,並向所述服務端發送連接請求。
步驟s304:所述服務端與所述客戶端建立連接。
在具體實施中,服務端在接收到客戶單發送的連接請求時,可以與客戶端建立連接,以通過所建立的連接,與客戶端之間傳輸數據。
步驟s305:所述客戶端將待處理數據發送至所述服務端。
在具體實施中,客戶端在與服務端建立連接成功時,可以待處理數據發送至服務端。其中,客戶端所發送的待處理數據可以封裝在為具有預先定義的報文格式的報文中。
步驟s306:所述服務端調用所述回調函數對所述待處理數據進行處理,得到對應的數據處理結果。
在具體實施中,服務端在接收到客戶端發送的待處理數據時,可以根據預先預定的報文格式,從服務端發送的報文中讀取對應的待處理數據,並調用預先已註冊的回調函數對所讀取的待處理數據進行處理,得到對應的數據處理結果。其中,回調函數對於所述待處理數據的處理方式可以根據實際的需要進行設置,不做限制。
步驟s307:所述服務端將數據處理結果發送至所述客戶端。
在具體實施中,為了滿足多樣化的數據處理需求,服務端可以根據回調函數的返回值,確定是否向客戶端返回對應的數據處理結果。
例如,當回調函數的返回值為第一數值時,則服務端將對應的數據處理結果發送至客戶端,反之,則無需將對應的數據處理結果發送至客戶端。
步驟s308:所述客戶端接收所述數據處理結果。
在具體實施中,當客戶端接收到服務端發送的數據處理結果時,同樣可以根據預先定義的報文格式從所接收的報文中讀取對應的數據處理結果。
步驟s309:所述服務端與所述客戶端之間斷開連接。
在具體實施中,當服務端將對應的數據結果發送給客戶端時,客戶端與服務端之間的連接斷開。同時,服務端將繼續對監聽埠進行監聽,也即從步驟s302重新開始執行,以獲取其他的待處理數據並進行處理。
在具體實施中,上述的進程間通信方法可以採用qt編程框架下實現的一種進程間通訊方式qlocalsocket或者qlocalserver,來實現不同作業系統環境下的進程間的通信,以實現高效、可靠的跨作業系統間的進程之間的通信。當然,本領域的技術人員也可以採用其他的方式,實現不同作業系統環境下的進程間的通信,在此不做限制。
採用本發明實施例中的上述方案,通過服務端對客戶端發送的待處理數據進行處理,並將處理結果發送至所述客戶端,可以實現不同作業系統環境下的進程間的通信,滿足不同作業系統環境下的進程之間的通信需求。
進一步地,服務端採用預先註冊的回調函數對客戶端發送的數據進行處理,並將處理結果發送給客戶端,可以滿足客戶端對於數據的多樣化處理需求。
進一步地,當所述回調函數的返回值為預設的第一數值時,服務端將回調函數得到的數據處理結果發送至客戶端,否則,則無需將所得到的數據處理結果發送至客戶端,可以滿足進程間通信的多樣化需求。
本領域普通技術人員可以理解上述實施例的各種方法中的全部或部分步驟是可以通過程序來指令相關的硬體來完成,該程序可以存儲於計算機可讀存儲介質中,存儲介質可以包括:rom、ram、磁碟或光碟等。
以上對本發明實施例的方法及系統做了詳細的介紹,本發明並不限於此。任何本領域技術人員,在不脫離本發明的精神和範圍內,均可作各種更動與修改,因此本發明的保護範圍應當以權利要求所限定的範圍為準。