cs_Pierrot91
Messages postés2Date d'inscriptionmardi 16 septembre 2003StatutMembreDernière intervention28 septembre 2003
-
17 sept. 2003 à 23:16
ZedMaTrix
Messages postés178Date d'inscriptionvendredi 25 octobre 2002StatutMembreDernière intervention14 août 2008
-
23 oct. 2006 à 23:41
Voila j'ai un probleme. Je fais un client FTP.
Il se connect au FTP tout va bien, le probleme est que quand j'envoie la command LIST pour recuperer la liste de fichier present sur le serveur, il m'envoie le message :
-150 Opening ASCII mode data connection fo /bin/ls (x)bytes
puis le message :
-425 Can't build data connection.
le tout quand je suis en mode passif.
Apres on m'a dit qu'il se servait du port decrit lorsqu'on appelle la command PASV, je l'ai utilisé pour cree un nouveau socket qui se connect sur ce port la, et il me dit 226 transfert complete, mais je ne peux rien recuperer.
Enfin j'ai essayer en mode normal en definissant mon port, et en creant un serveur en attente de connection, mais ca me refait la meme chose je ne peux rien recuperer.
roswell117
Messages postés61Date d'inscriptionjeudi 31 janvier 2002StatutMembreDernière intervention18 novembre 2005 19 sept. 2003 à 00:57
Pour récupérer les données en mode passif, il faut suivre ce schéma :
_ envoi de la commande "PASV" au serveur.
_ le serveur répond en donnant une réponse du style "x,x,x,x,a,b".
_ il faut traduire, les x représentent l'adresse ip, le port est obtenu grâce au calcul a*256 + b.
_ on crée ensuite un socket de type serveur, en écoute, sur le port obtenu.
_ et on finit par envoyer la commande "LIST".
Le ftp comprent deux canaux de communications : un canal de contrôle, pour les commandes sur le port 21 (le + souvent), et un canal de données, pour les transferts sur un port qui change tout le temps.
En mode passif, le client se connecte sur un port défini par le serveur, et en mode normal, mode actif, c le serveur qui se connecte sur un port défini par le client.
Tu as juste inversé le sens des communications.
L'implémentation du mode passif est assez simple à mettre en oeuvre, je l'ai réussie, mais le mode actif est plus compliqué. Je galères toujours sans trop de réussite.
ZedMaTrix
Messages postés178Date d'inscriptionvendredi 25 octobre 2002StatutMembreDernière intervention14 août 2008 23 oct. 2006 à 23:41
@ roswell117 : Désolé de te contre dire, mais tu as fais une petite faute dans ton explication.
Tu as dis donc d'envoyer la commande PASV, lire l'adresse IP et le port, ca OK.
Parcontre aprés tu dis de créer une socket en écoutant le port trouvé.
Enffet, il faut créer une socket qui va se connecter à l'adresse IP et le port retourné par la command PASV.
Le cas ou il faut écouté le port c'est avec la commande PORT. C'est nous qui invitons le serveur à se connecter sur notre IP, sur le port que l'on indique.