2011-08-11 66 views
2

我想創建一個命名管道服務器寫入管道沒有客戶端。 我所試圖做的是命名管道使用C + +

1)CreateNamedPipe時
2)我不希望客戶端現在
3連接)的管道將被服務器寫入和後來的管道將被讀取。

是否有可能做到這樣的事情?

如果您對此問題有任何疑問,請幫助。

+0

最近使用了命名管道,我不認爲管道可以用於讀/寫,除非管道的兩端都連接。 – smerlin

+0

在問你之前,你已經嘗試了幾種方法,對吧?那麼你能告訴你所嘗試的是什麼以及它失敗了嗎? –

+0

我做了一個管道服務器和一個管道客戶端。創建管道後,我必須等待客戶端連接到管道,一旦連接服務器寫入管道並且客戶端讀取管道。 – kunal

回答

1

你需要有單獨的線程,將使用ConnectNamedPipe等待給定的命名管道。一旦客戶端連接,ConnectNamedPipe將返回。使用新連接的管道進行通信(可能會爲此新連接產生一個新線程),然後返回到ConnectNamedPipe進行另一個管道連接。

+0

但它會必須等待客戶端連接。 – kunal

+0

爲什麼這是一個問題?直到客戶端連接時才寫入某種緩衝區(例如,如果有字符串,則使用'std :: stringstream'),一旦客戶端連接,將緩衝區的當前內容寫入管道,並將未來消息直接寫入管道。 – smerlin

+0

@smerlin我確實有這種情況,如果客戶端永遠不會連接,我可以將它寫入一個文件中,但我只想知道是否可以創建一個管道並只寫入該管道而無需連接到管道的客戶端。 – kunal