【问题标题】:How to test a remoting connection (check state)如何测试远程连接(检查状态)
【发布时间】:2008-11-13 17:08:16
【问题描述】:

我在主机应用程序中创建了一个对象,并且可以使用远程处理远程访问它,有什么方法可以测试连接以确保它仍然“活动”?如果远程连接断开连接,或者某些属性可以告诉我远程连接的状态,我可以使用它触发的事件。有这样的东西吗?

【问题讨论】:

    标签: c# .net .net-2.0 remoting


    【解决方案1】:

    我通常在远程服务器 MarshallByRef 类中添加另一个方法, (我一般将其命名为 Ping(),如:

     public void Ping() {} 
    

    什么都不做,什么也不返回。然后为了“测试”我的连接,我调用这个方法......如果它抛出 System.Net.Sockets.Exception,我已经失去了连接......

    【讨论】:

    • 谢谢,我猜你证实了我的怀疑,即框架中没有提供此功能的工具。这种 ping 方法应该可以正常工作。谢谢
    【解决方案2】:

    检查连接有什么好处?即使你 ping 了它,也并不意味着在下一刻你进行远程调用时连接仍然存在。

    只需尝试/接听您的远程呼叫,您就会知道。

    这种类型的检查是没有意义的(网络连接、文件锁定等)。因为您检查的事物的状态可以在检查后立即更改。您只需托盘,如果失败则清理/重试。

    【讨论】:

    • 因为我正在远程处理的对象托管在 Windows 应用程序中。如果应用程序没有运行,我希望能够重新启动它。
    • 同样的事情 - 如果调用失败,重新启动。正如我所说,ping 几乎是一样的,除了它是一个额外的调用,因为它不能以任何方式保证下一次调用会成功,或者应用程序不会在下一次调用之前或期间关闭。
    • 我正在寻找与@Jeremy 所追求的类似的解决方案,而“Ping”的想法也对我有用。 @Sunny 是对的,在基础级别处理异常要好得多,因为远程处理对象很可能在“Ping”测试后立即关闭。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-01
    • 2016-06-03
    • 2010-09-12
    • 2019-03-03
    • 2010-10-22
    • 1970-01-01
    相关资源
    最近更新 更多