管道通信
问题描述:
我创建一个应用程序,其中有三个组成部分:管道通信
- 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等等.....
答
正如其命名为PIPE数据先进入出来第一,在管道中的数据不会被覆盖。
对于在其他端读取之前等待写入:您最好控制在另一端读取多少(例如,将消息长度作为第一个字节传递)。所以读者知道它应该阅读多少,并且只从管道读取这么多。
+0
k它的帮助......谢谢 – 2012-08-17 06:45:24
但是EXE1如何知道wcf是否读取数据。第二个数据被第一个数据覆盖或第一个数据将被删除。 – 2012-08-17 06:32:42
@sunilpol在向WCF发送一些数据之后,如果它没有通过发送确认(如您选择的某个二进制字)的确认来响应您,您将知道WCF未收到数据。 – Anirudha 2012-08-17 06:35:23
k ..我会做到这一点,但告诉我什么时候wcf读取数据,现在exe1现在已经得到确认它写入第二个数据。第一个数据自动删除或被第二个数据覆盖 – 2012-08-17 06:44:13