【问题标题】:Detect RPC connection loss from server-side on Windows从 Windows 上的服务器端检测 RPC 连接丢失
【发布时间】:2010-10-10 01:25:08
【问题描述】:

有没有办法从服务器端检查 RPC 连接的状态?我正在寻找一种方法来检测来自客户端的连接是否丢失,无论是客户端崩溃还是其他连接问题。

【问题讨论】:

    标签: c++ c windows winapi rpc


    【解决方案1】:

    莫弗拉纳根的回答是最好的恕我直言。更多上下文。

    如果您使用绑定句柄,则无法跨 RPC 调用跟踪状态,并且“客户端断开连接”的概念基本上没有意义 - 您仍然需要从 RPC 调用返回。

    如果您使用上下文句柄,则 RPC 运行时库将在客户端断开连接时调用 _rundown 函数。

    当调用该例程时,服务器可以清理它需要的任何东西。

    【讨论】:

    • 我只是为了过去的缘故不得不回答这个问题。我曾经在 MSFT 的 RPC 团队工作,这让我想起了 RPCDBG ;)
    【解决方案2】:

    使用Context Handles 管理特定客户端调用之间的服务器状态。 RPC 使用 keep-alive 来检测客户端断开连接,并在客户端断开连接时执行您的上下文句柄破例例程。

    【讨论】:

    • 这是否意味着,如果我想让服务器检测现有 RPC API 上的客户端离开,最好的方法是添加一个返回上下文句柄的函数,该句柄除了识别客户端之外什么都不做,当它的rundown函数执行时,我知道客户端走了?听起来这需要最少的更改,尽管我真的希望我可以在没有任何客户端更改的情况下做到这一点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-26
    • 1970-01-01
    • 2015-04-09
    • 1970-01-01
    • 2022-08-16
    相关资源
    最近更新 更多