2012-08-17 128 views
0

我創建一個應用程序,其中有三個組成部分:管道通信

  • EXE1
  • WCF服務
  • EXE2

EXE1將數據寫入到管道,然後WCF讀取數據和將其發送到EXE2。但是情況是,EXE1將數據寫入for循環。因此,我只想知道,假設EXE1已將數據寫入管道,但wcf正在做其他一些工作,但尚未讀取該數據。現在,EXE1嘗試寫入第二個數據。因此,在這種情況下,以前的數據是否被覆蓋,或者EXE1是否等待wcf服務一段時間。

我想控制這種情況下,直到第一個數據不被WCF EXE1讀取必須等待一段再寄一次要同步發送數據EXE2。

我該怎麼做?

回答

0

您將不得不使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

1

正如其命名爲PIPE數據先進入出來第一,在管道中的數據不會被覆蓋。

對於在其他端讀取之前等待寫入:您最好控制在另一端讀取多少(例如,將消息長度作爲第一個字節傳遞)。所以讀者知道它應該閱讀多少,並且只從管道讀取這麼多。

+0

k它的幫助......謝謝 – 2012-08-17 06:45:24