2010-09-20 4 views

Répondre

1

Vous voulez dire autre chose que la fonction isConnected() sur l'objet session?

+1

Oui, car il retourne vrai même si je vous déconnecter d'Internet tout en tunneling une télécommande ordinateur. – arpad

+0

ouais. c'est vrai. @ rp- avez-vous trouvé un moyen qui fonctionne? – Alexis

+0

Malheureusement pas. – arpad

1

Si vous configurez un portforwarding avec setPortForwardingL(), vous pouvez utiliser une fonction comme celle-ci pour vérifier si le tunnel (et la connexion) est toujours actif. (L'exemple tunnels le service Echo).

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

Il semble que l'état d'une connexion dans JSch n'est mis à jour que si une action se produit sur cette connexion. Par conséquent, le moyen décrit semble le seul à être sûr si la connexion est encore en place. – KwaXi

1
Session.isConnected() 

fonctionne pour moi, mais doit être sûr que vous appelez

Session.setServerAliveInterval(int) 

avant

Session.connect() 
Questions connexes