FTP bufferedReader long après la commande "list"

dgueul Messages postés 11 Date d'inscription samedi 11 avril 2009 Statut Membre Dernière intervention 31 juillet 2012 - 23 juil. 2012 à 18:20
dgueul Messages postés 11 Date d'inscription samedi 11 avril 2009 Statut Membre Dernière intervention 31 juillet 2012 - 31 juil. 2012 à 10:34
Bonjour,

Voila, je me suis créé un petit client FTP très léger qui fonctionnait du feu de dieu...

Jusqu'à aujourd'hui, où je tombe sur un serveur ftp pas très sympa puisqu'il ne me répond pas assez vite...

Je m'explique :

Je me connecte à mon serveur FTP tout se passe bien, il me réponds assez rapidement, mais quand je lui envois la commande "LIST" pour lister les fichiers et dossiers du répertoire courant, le serveur me répond : "150 Opening ASCII mode data connection for file list". Puis, plus rien pendant environ 3 minutes. Et il finis par me répondre (enfin) "226 Transfer complete".

Ce délais de est très (trop) long, et bizarrement avec filezilla, c'est instantané.

Donc ça vient bien de mon appli!


j'utilise un BufferedReader que j'instancie comme ça :

reader = new BufferedReader(new InputStreamReader(socket.getInputStream(), "iso-8859-15" ));


et je l'utilise dans une fonction pour lire ce que m’envoie le serveur de cette manière:

private String readLine() throws IOException {
                String line = reader.readLine();
                System.out.println( " - " + line );
return line;
}


J'appelle cette fonction après être entré en mode passif :

sendLine("LIST");
String response = readLine();
if (!response.startsWith("150 ")) {
throw new IOException("Impossible de lire le répertoire.");
}
response = readLine();
if (!response.startsWith("226 ")) {
throw new IOException("Impossible de lire le répertoire.");
}


Le programme bloque 3 minutes à l'appel du deuxième "readLine()".

J'ai essayer beaucoup de chose, mais là je sais plus quoi essayer...

Si quelqu'un peut m'aider..

Par avance merci!

8 réponses

cs_jojolemariole Messages postés 519 Date d'inscription mercredi 21 mars 2007 Statut Membre Dernière intervention 19 décembre 2016 25
23 juil. 2012 à 18:39
Tu as essayé d'écouter le port 21 avec wireshark par exemple, pour voir si le serveur te répond assez vite ? Au niveau Java, je ne vois pas trop ce que tu peux changer.

Sinon, essaie de comparer la communication Filezilla avec la tienne pour voir s'il y a une différence.

Dernier test qui peut être fait, lis sur le buffer caractère par caractère histoire de voir ce qui se passe en temps réel.
0
Utilisateur anonyme
23 juil. 2012 à 21:24
Salut,

As-tu essayé de remplacer ton iso-8859-15 par utf-8 ? Pas dis que ça change grands choses, mais tu ne perds rien à essayer =D


--
Pylouq
Heureux sont ceux qui lisent le Réglement, ils ne finiront peut-être pas au bûcher.
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
24 juil. 2012 à 08:40
Salut,

Je ne suis pas familiarisé avec la RFC FTP mais sur le poste suivant (ICI) les propos de youdontcar​e semblent cohérents, normalement en parcourant le poste tu auras la solution à ton pb.

-----

"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
0
dgueul Messages postés 11 Date d'inscription samedi 11 avril 2009 Statut Membre Dernière intervention 31 juillet 2012
26 juil. 2012 à 09:20
Désolé, de n'avoir pas répondu plus tôt (beaucoup de taf).

Merci pour vos réponses!

jojolemariol:
Effectivement, je vais faire des tests avec wireshark. Je saurais au moins si les 3 minutes viennent du serveur ou de mon appli.

Twinuts:
Je confirme, les propos de youdontcar sont cohérents. Mais sur la deuxième socket pas de problème je récupère les datas assez rapidement. C'est sur la première qu'à un moment il y a une pause de 3 minutes...

Pylouq:
A tout hasard, je vais essayer mais je n'y crois pas trop ;)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dgueul Messages postés 11 Date d'inscription samedi 11 avril 2009 Statut Membre Dernière intervention 31 juillet 2012
27 juil. 2012 à 09:04
Voici les essais que j'ai fais:

-Remplacer "iso-8859-15" par utf8: sans succès.
-Utiliser wireshark pour comprendre ce qu'il se passe:
Et effectivement la réponse que j'attends est bien reçu 3 minutes plus tard...
Pire je me suis aperçu qu'il s'agissait de 3 minutes précise (à quelques millisecondes près).

De plus, j'ai comparé les trames que j'envoie et celle que filezilla envoie, et ce sont les mêmes... ??? Et là du coup, je ne comprends plus rien...
0
dgueul Messages postés 11 Date d'inscription samedi 11 avril 2009 Statut Membre Dernière intervention 31 juillet 2012
29 juil. 2012 à 09:07
J'ai trouvé quelques chose mais j'ai pas encore la solution.

Quand j'envoie "LIST" sur les serveur où ça fonctionne normalement, il me répondent :
- "150 Opening BINARY mode data connexion for file list"

Ici, quand j'envoie "LIST" le serveur me renvoie :
- "150 Opening ASCII mode data connexion for file list"

Pourquoi passe t il en ASCII sans que je ne lui demande rien, et surtout comment le forcer à passé en mode binaire. J'ai essayer "TYPE I" sans succès.


En plus, il comme j'ai dit plus haut le serveur me renvoie bien la réponse "226" 3 minutes en retard, mais les infos sont arrivé sur la deuxième socket depuis belle lurette...
0
cs_jojolemariole Messages postés 519 Date d'inscription mercredi 21 mars 2007 Statut Membre Dernière intervention 19 décembre 2016 25
30 juil. 2012 à 09:12
C'est possible de contacter l'admin du serveur FTP ?
0
dgueul Messages postés 11 Date d'inscription samedi 11 avril 2009 Statut Membre Dernière intervention 31 juillet 2012
31 juil. 2012 à 10:34
Je vais voir, mais ça m’étonnerais, le serveur est chez 1hebergement, je vais voir avec le propriétaire du site...

Mais j'ai peur que même si quelqu'un est disponible, qu'il réponde que vu que ça fonctionne sous filezila, ça vient de mon programme...


Je vous tiens au courant.
0
Rejoignez-nous