【问题标题】:Named pipe 232 the pipe is being closed命名管道 232 管道正在关闭
【发布时间】:2013-10-28 13:50:07
【问题描述】:

嘿,我正在为 rpc 使用命名管道,当服务器收到写入管道的异常(例如客户端突然关闭)时,我捕获了异常,调用断开命名管道,然后我尝试调用 connectNamedPipe,我得到 232:管道正在关闭。我的问题是如何解决这个问题,所以在我得到一个异常之后再次开始监听管道

【问题讨论】:

    标签: windows named-pipes


    【解决方案1】:

    抱歉,不知道是不是太晚了。这个帖子好像很老了。

    但只是为了像我一样在这里谷歌这个问题的人的利益。

    线程启动器面临的问题很简单,客户端断开后无法重新连接到同一管道!

    所以如果客户端的管道突然关闭,服务器端的管道也会死掉。如果要重新连接,服务器需要提供另一个 CreateNamedPipe 函数来获取新的连接,并要求客户端尝试。

    关键是对管道的理解。

    【讨论】:

    • 我正是在寻找类似问题的答案。您知道是否可以将客户端管道配置为在不导致服务器管道关闭的情况下关闭?
    • 非常感谢您提供这些信息。救生员。被困了好几天,这是关键。
    【解决方案2】:

    我也遇到过同样的问题,但和 Leon 有点不同。

    就我而言,ReadFile() 返回 232“管道正在关闭”。 该消息是误导性的。管道未关闭。 ReadFile() 只是返回,没有读取任何数据。

    由于我创建的管道是非阻塞的,因此 ReadFile() 在没有数据的情况下立即返回非常有意义。

    如果查看winerror.h中的错误码,就是“ERROR_NO_DATA”,比“管道正在关闭”要好很多

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-10-13
      • 1970-01-01
      • 1970-01-01
      • 2011-10-13
      • 1970-01-01
      • 1970-01-01
      • 2016-08-14
      • 2017-05-13
      相关资源
      最近更新 更多