使用Cromis IPC的双向通信

时间:2012-03-16 16:13:54

标签: delphi windows-services ipc named-pipes

我已经下载并玩过Iztok Kacin的Cromis IPC组件。

我已下载此组件集以允许我的Windows服务和GUI进行通信。然而,似乎通信是一种方式(除了服务器响应)。

我可以很高兴地将一条消息从客户端发送到侦听服务器,但我似乎无法将消息发送回客户端,除非它是一个响应。

有没有人知道这些组件是否可以实现双向通信,或者我是否需要在GUI和服务应用程序中使用服务器和客户端?

3 个答案:

答案 0 :(得分:5)

双方都需要服务器和客户端。

答案 1 :(得分:5)

我是组件的作者,而其他人已经告诉过你,目前没有办法进行双向沟通。原因很简单,就是命名管道的方式。在客户端和服务器之间保持永久连接将是非常复杂的,坦率地说IPC并不是这样。但是,有时您需要通知新数据可用,我正在考虑滚动独立信令机制。这样,服务器可以通知客户端有什么东西给他。然后,客户端将以与现在相同的方式访问数据。现在我赞成将其作为一个完全独立的组件实现,然后可以很容易地与我的IPC一起使用。

关注博客,因为如果我决定这样做,我会在那里发布。

答案 2 :(得分:0)

简答:

Cromis IPC是一个命名管道实现。客户端负责发送一组命令,这些命令应定义为特定于应用程序的协议。相应的服务器侦听客户端并充当处理器来处理这些协议请求。在您的情况下,您希望进行双向通信,因此您应该在具有两个协议的两个进程上创建客户端和服务器。

长答案:

您可以使用Cromis IPC来完成工作。如上所述,您必须自己定义两个特定于应用程序的协议并编写协议客户端和协议处理器。这是一项了不起的工作。

最近我遇到了Apache Thrift。 Apache Thrift旨在提供高性能的IPC框架。 Apache Thrift的一个出色功能是它可以自动为IPC生成最多的代码。它支持Delphi。

您只需在spec文件中定义特定于应用程序的协议即可。 Thrift将为您生成相关的客户端和处理器代码。此外,它不仅支持命名管道,您可以选择套接字或其他传输实现。这真的值得一试。