2010-09-20 174 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()