管道通信

问题描述:

我创建一个应用程序,其中有三个组成部分:管道通信

  • EXE1
  • WCF服务
  • EXE2

EXE1将数据写入到管道,然后WCF读取数据和将其发送到EXE2。但是情况是,EXE1将数据写入for循环。因此,我只想知道,假设EXE1已将数据写入管道,但wcf正在做其他一些工作,但尚未读取该数据。现在,EXE1尝试写入第二个数据。因此,在这种情况下,以前的数据是否被覆盖,或者EXE1是否等待wcf服务一段时间。

我想控制这种情况下,直到第一个数据不被WCF EXE1读取必须等待一段再寄一次要同步发送数据EXE2。

我该怎么做?

您将不得不使WCF服务确认它将要接收的一组特定的bytes

因此Exe1发送10个字节并等待WCF确认它。

如果WCF不确认,Exe1将重新发送它(超时)!

如果WCF承认它,你会送下10bytes等等.....

+0

但是EXE1如何知道wcf是否读取数据。第二个数据被第一个数据覆盖或第一个数据将被删除。 – 2012-08-17 06:32:42

+0

@sunilpol在向WCF发送一些数据之后,如果它没有通过发送确认(如您选择的某个二进制字)的确认来响应您,您将知道WCF未收到数据。 – Anirudha 2012-08-17 06:35:23

+0

k ..我会做到这一点,但告诉我什么时候wcf读取数据,现在exe1现在已经得到确认它写入第二个数据。第一个数据自动删除或被第二个数据覆盖 – 2012-08-17 06:44:13

正如其命名为PIPE数据先进入出来第一,在管道中的数据不会被覆盖。

对于在其他端读取之前等待写入:您最好控制在另一端读取多少(例如,将消息长度作为第一个字节传递)。所以读者知道它应该阅读多少,并且只从管道读取这么多。

+0

k它的帮助......谢谢 – 2012-08-17 06:45:24