2010-09-20 136 views

回答

1

您是指会话对象上的isConnected()函数以外的其他位置?

+1

是之前,因为它返回true,即使我从互联网上断开,而隧道远程电脑。 – arpad 2011-03-12 22:09:52

+0

是的。这是真的。 @ rp-你找到了一种行之有效的方法吗? – Alexis 2013-03-18 05:02:05

+0

不幸的不是。 – arpad 2013-08-12 08:02:02

1

如果使用setPortForwardingL()设置portforwarding,则可以使用类似这样的函数来确定隧道(和连接)是否仍然存在。 (示例隧道回声服务)。

public boolean performCheck() throws Exception { 
    Socket socket; 

    try { 
     socket = new Socket("localhost", 7); 

     if (socket.isConnected()) { 
      socket.close(); 
      return true; 
     } 
    } catch (UnknownHostException e) { 
     // nothing special 
    } catch (IOException e) { 
     // nothing special 
    } 

    return false; 
} 
+0

似乎只有在此连接上发生某些操作时,才会更新JSch中连接的状态。因此,所描述的方式似乎是唯一可以确定连接是否仍在运行的方式。 – KwaXi 2013-04-11 10:06:16

1
Session.isConnected() 

对我的作品,但必须确定你打电话

Session.setServerAliveInterval(int) 

Session.connect()