如何在Thrift中检测服务器断开连接?

时间:2015-04-23 11:43:07

标签: c# c++ rpc thrift

注意:This similar question要求另外一点(在服务器端检测客户端断开连接)。

我有一个C#Thrift客户端通过命名管道传输连接到C ++ Thrift服务。当C ++服务终止时,即当连接不再可用时,我想从客户端检测。我试着查看TTransport.IsOpen属性,但无论如何都会保持true。有没有一种干净的方法来实现这一点(没有使用心跳功能扩展我的服务)?

1 个答案:

答案 0 :(得分:2)

为了避免对平台甚至所选传输层的依赖,我最终向我的服务添加了无操作ping调用。客户端从后台线程定期调用此方法,并在服务器上不执行任何操作。结果是更新了管道的IsOpen属性,并且在尝试调用某些内容时我也获得了IOException。这远非理想,但至少是有效的,我已经因为其他原因包装了我的服务,所以我可以隐藏这个丑陋的界面背后的丑陋。