【发布时间】:2013-12-21 23:38:00
【问题描述】:
当我尝试调用由 midl 工具从 IDL 文件生成的 RPC 函数时,如果绑定在其 RPC_BINDING_HANDLE 中的 IP 无法访问,它会阻塞大约 20 秒(在 NdrGetBuffer 函数处)。
在调用 RPC 函数之前,我尝试在其 RPC_BINDING_HANDLE 上调用具有 RPC_C_BINDING_MIN_TIMEOUT 值的 RpcMgmtSetComTimeout 函数,但没有帮助,仍需要等待约 20 秒。
有什么办法可以缩短这种情况下的超时等待时间?非常感谢!
艾略特
【问题讨论】:
-
嗯,一般来说,发现主机确实不可访问需要很长时间。互联网很大,有各种各样的链接,有不同的延迟。当面临可能很长的网络延迟时,我所做的就是断开网络调用并运行一个计时器。远程对等方在计时器触发之前回复.. 或者它没有回复,我认为呼叫失败。
-
谢谢马丁。是的,当我面对套接字的事情时,我也会线程化并使用异步。可以玩的功能。但是这个RPC调用函数是midl工具生成的,工具只是生成sync。调用...嗯...是否有可能生成异步。调用 RPC 函数?或者我可以在执行期间取消 RPC 函数(通过另一个线程)吗?干杯,埃利奥特
标签: c++ windows network-programming rpc idl