【问题标题】:Two way communication using Cromis IPC使用 Cromis IPC 的双向通信
【发布时间】:2012-04-02 04:52:20
【问题描述】:

我已经下载了来自 Iztok Kacin 的 Cromis IPC 组件并玩了一下。

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

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

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

【问题讨论】:

  • 阅读您提供的链接上的 cmets。
  • 你为什么不经常投票?然后,如果服务器无话可说,则可以使用空消息进行响应,如果对客户端有话要说,则可以使用完整的回复消息进行响应。这是一种解决方法,对于这种情况,我总是选择 TCP/IP 作为更好的解决方案。

标签: delphi windows-services ipc named-pipes


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      简答:

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

      长答案:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-26
        • 1970-01-01
        • 2010-09-20
        • 1970-01-01
        • 2012-03-12
        相关资源
        最近更新 更多