gpt4 book ai didi

c++ - 调用 RPC 调用时为 "Already listening"

转载 作者:太空宇宙 更新时间:2023-11-04 12:28:27 33 4
gpt4 key购买 nike

我使用 Microsoft RPC 进行进程间通信。我有一个接口(interface),其中有一组方法接受字节管道作为“输入”参数(IDL 描述):

[
uuid(ActualGuidHere),
version(1.0),
pointer_default(unique)
]

interface IMyInterface
{
//other irrelevant methods here
error_status_t rpcDoAction( [in] pipe byte params );
//more irrelevant methods here
}

每隔一段时间,当我通过 MIDL 生成并委托(delegate)给 NdrClientCall2() 的客户端 stub 在客户端调用此类方法时,它不会到达服务器端,但 NdrClientCall2() 返回 RPC_S_ALREADY_LISTENING(“服务器已经在听了”),这真的很令人困惑。

我在传输过程中添加了登录到用于推/拉操作的函数——它们不会被任何以这种方式失败的调用调用。这意味着传输甚至还没有开始。

在调用没有管道作为参数的方法时,我从未遇到过这种行为。

可能是什么原因和解决方法?

最佳答案

文档似乎非常少——我不认为有一个庞大的用户社区可以直接使用 RPC APIs——但我的猜测是,为了设置管道参数,它是 RPC 内部调用 RpcServerListen 所必需的。一次只能阻止对该 API 的一次调用。

您只是偶尔看到问题这一事实表明它与时间有关,那么您是否有可能在不同的线程上进行两次这样的调用,有时它们会同时发生?

要么是那个,要么是 RPC 库的实现中存在与时间相关的错误,您将不得不通过重试调用来解决这个问题(这在任何情况下都可能是一种有效的解决方法)。

关于c++ - 调用 RPC 调用时为 "Already listening",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/684625/

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