【问题标题】:Named Pipes using C++使用 C++ 的命名管道
【发布时间】:2011-10-24 18:34:09
【问题描述】:

我正在尝试创建一个命名管道服务器以在没有客户端的情况下写入管道。 我想做的是

1)创建命名管道
2)我不希望客户端现在连接
3)管道将由服务器写入,稍后管道将被读取。

有可能做这样的事情吗?

如果您对此问题有任何疑问,请提供帮助。

【问题讨论】:

  • 我最近使用了命名管道,我认为除非管道的两端都连接,否则管道不能用于读/写。
  • 在询问之前您肯定已经尝试过几种方法,对吧?那么你能说出你尝试了什么以及它是如何失败的吗?
  • 我做了一个管道服务器和一个管道客户端。创建管道后,我必须等待客户端连接到管道,一旦连接服务器写入管道,客户端读取管道。跨度>
  • 在另一种情况下,我创建一个管道并且不等待客户端连接然后尝试写入管道然后它给出错误 218“等待进程打开另一端管道。”

标签: c++ winapi ipc pipe named-pipes


【解决方案1】:

您需要有一个单独的线程来等待使用ConnectNamedPipe 的给定命名管道。一旦客户端连接,ConnectNamedPipe 就会返回。使用新连接的管道进行通信(可能为这个新连接生成一个新线程),然后返回到ConnectNamedPipe 进行另一个管道连接。

【讨论】:

  • 但它必须等待客户端连接。
  • 为什么会有问题?只需写入某种缓冲区,直到客户端连接(例如std::stringstream,如果您有字符串),一旦客户端连接,将缓冲区的当前内容写入管道,并将未来的消息直接写入管道。跨度>
  • @smerlin 我确实有这种情况,如果客户端从不连接,我可以将其写入文件,但我只想知道是否可以创建一个管道并且只写入该管道而无需客户端连接到管道。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-07-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-08
  • 2020-04-07
相关资源
最近更新 更多