【问题标题】:JSch/Java - proper way to detect disconnected serverJSch/Java - 检测断开服务器的正确方法
【发布时间】:2015-02-10 07:52:38
【问题描述】:

我正在使用 Jsch 库通过 SSH 在服务器上执行一些命令。我的应用程序应该保持连接到服务器,直到用户手动断开它。因此,我需要一些方法来检测由于网络问题(例如)导致的断开连接,以允许我的应用自动重新连接。

#isConnected() 方法。我可以用它来执行我的检查吗?我的意思是,如果这个方法可以检测到网络问题导致的断开连接,或者它只是改变状态,在我调用方法#disconnect()之后?

[编辑] 似乎只有在此连接上发生某些操作时,JSch 中的连接状态才会更新。所以我不能以这种方式处理网络错误。我可以创建新线程来使用 Socket(例如)监视我的主机和端口,但我不喜欢这种解决方法。在背景中应用时会导致大量电池耗尽。这是不可接受的。

我还需要通知用户服务器关闭连接并让他重试。

【问题讨论】:

    标签: java session jsch disconnect


    【解决方案1】:

    我已经通过source,看起来你可以这样使用它,是的。我会编写一个提供程序类,它为您的应用程序提供Session,如果连接丢失,它会在延迟后尝试重新建立。

    【讨论】:

    • 抱歉,即使我断开网络连接,session.isConnected 也会返回 true。它似乎没有执行任何检查。有什么想法吗?
    • 您可以使用#sendKeepAliveMsg() 方法实现您自己的检查。如果失败,它应该抛出一个异常。
    • 我测试了它,现在似乎抛出了异常。我通过断开网络进行了测试。很奇怪。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-13
    • 2022-08-03
    • 1970-01-01
    相关资源
    最近更新 更多