2012-03-16 50 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将为您生成相关的客户端和处理器代码。它不仅支持命名管道,还可以选择套接字或其他传输实现。这真的值得一试。