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 :
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 code est bien beaucoup plus compliqué mais la démarche principale c'est comme au-dessus.

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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
:org.apache.commons.net.ftp.FTPConnectionClosedException: Connection closed without indication
Ce que je cherche c'est d'abord à savoir pourquoi il rejette la connexion?
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) :
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);
}
Je ne sais pas si cela peut marcher ou pas, mais c'est sur que ce n'est la solution idéal.
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