2012-03-16 98 views
4

我已經下載並與來自Iztok Kacin的Cromis IPC組件玩過。使用Cromis IPC的雙向通信

我已經下載了這個組件集,以允許我的Windows服務和GUI進行通信。然而,似乎溝通是一種方式(除了服務器響應)。

我可以非常高興地從客戶端發送消息到監聽服務器,但我似乎無法將消息發送回客戶端,除非它是作爲響應。

有誰知道如果這些組件可以實現雙向通信,或者我需要在GUI和服務應用程序中都需要服務器和客戶端嗎?

+2

閱讀您提供的鏈接上的評論。 – kobik 2012-03-16 16:35:22

+0

你爲什麼不頻繁地投票?然後服務器可以迴應一個空白的消息,如果它沒有什麼可說的話,或者如果它有話要說給客戶,那麼回覆消息是完整的。這是一種解決方法,我會一直選擇TCP/IP作爲這種情況的更好的解決方案。 – avra 2014-05-28 11:58:30

回答

5

我是組件的作者,正如其他人已經告訴過你的,目前沒有辦法做雙向通信。原因很簡單,就是命名管道的工作方式。維持客戶端和服務器之間的永久連接將會非常複雜,並且坦率地說IPC不是這個原因。但是由於有時需要通知新數據可用,我正在考慮滾動獨立信號機制。這樣服務器可以通知客戶他有什麼東西。然後,客戶端將以與現在相同的方式訪問數據。現在我贊成把它作爲一個完全獨立的組件來實現,然後可以很容易地與我的IPC一起使用。

請關注博客,因爲如果我決定這麼做,我會在那裏發佈。

+1

看起來你的網站是關閉.... – 2015-06-26 09:54:02

5

您將需要雙方的服務器和客戶端。

0

答案很簡單:

Cromis IPC是一個命名管道實現。客戶端負責發送一組命令,這些命令應該被定義爲應用特定的協議。相應的服務器監聽客戶端並充當處理器來處理這些協議請求。在你的情況下,你希望有一個雙向通信,所以你應該在兩個協議的兩個進程上創建一個客戶端和一個服務器。

龍答:

您可以使用Cromis IPC做的工作。正如我上面所描述的那樣,您必須定義兩個特定於應用程序的協議並自己編寫協議客戶端和協議處理器。這是一項了不起的工作。最近碰到Apache Thrift。 Apache Thrift旨在提供高性能的IPC框架。 Apache Thrift的一個奇妙功能是它可以自動爲IPC生成最多的代碼。它支持Delphi。

您只需在spec文件中定義應用程序特定的協議即可。 Thrift將爲您生成相關的客戶端和處理器代碼。它不僅支持命名管道,還可以選擇套接字或其他傳輸實現。這真的值得一試。