2011-08-11 70 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