Bonjour tout le monde,
J'ai une question peut-etre un peut bête :
J'ai une application qui connecte à un serveur FTP pour prendre le contenu d'un fichier et le rend comme un Stream. Cette démarche se fait recursivement. C-a-d :
quelques chose comme ca :
Le code est bien beaucoup plus compliqué mais la démarche principale c'est comme au-dessus.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 for (100 fois){ FTPClient ftp = new FTPClient(); try{ ftp.connect(host); }catch(Exception e){ // Fait quelques chose } Input Stream in = ftp.retrieveFile(file); traite(in); }
Le problème c'est que après une dizaine de connexions (vers loop 40eme fois), le serveur ftp rejette la connexion et envoie l'erreur :
Ce que je cherche c'est d'abord à savoir pourquoi il rejette la connexion?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 :org.apache.commons.net.ftp.FTPConnectionClosedException: Connection closed without indication
Mais la vrai question c'est comment gérer cette exception et demander automatiquement une nouvelle reconnexion apres le rejet de connexion. Je pense à mettre un goto dans Catch(Exception e) :
Je ne sais pas si cela peut marcher ou pas, mais c'est sur que ce n'est la solution idéal.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 for (100 fois){ FTPClient ftp = new FTPClient(); Label : try{ ftp.connect(host); }catch(Exception e){ // si la connexion est rejeté goto Label; } Input Stream in = ftp.retrieveFile(file); traite(in); }
Alors comment on peut assurer une connexion au serveur FTP? Je veut dire un code qui éviter d'avancer si la connexion n'est pas fait ou s'il y une exception et qui essaie consecutivement de reconnecter au serveur.
Je vous remercie beaucoup
Hassan
Partager