gpt4 book ai didi

windows - 命名管道客户端可以写入多个实例吗?

转载 作者:可可西里 更新时间:2023-11-01 11:38:30 26 4
gpt4 key购买 nike

在创建命名管道的多个实例(使用 CreateNamedPipe())之后,我使用 CreateFile() 来形成管道客户端。
当客户端向管道写入一条消息时,只有一个服务器实例获取它。

有没有办法让客户端向所有实例写一条消息?

最佳答案

据我所知,当客户端连接到命名管道的实例时,操作系统选择连接哪个服务器实例的方式没有记录。然而,根据经验,它似乎是在循环法的基础上完成的。

如果您准备依赖可能随服务包和 QFE 补丁而改变的未记录的行为,您的客户端可以继续关闭其管道句柄并再次调用 CreateFile 以获得一个新的 - 每次它都会附加到一个新的服务器实例的管道。但是,这样做存在一个问题,即客户端不知道何时停止。我想您可以发明一些涉及服务器响应的机制来打破循环,但它远不能令人满意。这不是命名管道的设计目的。

管道的多个服务器实例的真正目的是使管道服务器能够同时处理多个客户端。通常,同一个服务器进程管理所有实例。

你真的想扭转局面:你认为的客户端应该是服务器,并且应该创建和管理管道。需要通知的进程将作为命名管道的客户端连接。这是一种可以使用 WCF 非常容易地实现的模式,如果可以的话,使用双工契约(Contract)和 NetNamedPipeBinding。

关于windows - 命名管道客户端可以写入多个实例吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5478811/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com