Conception d'une sorte de client FTP
Je suis en train de me concentrer sur ce qu'on pourrait appeler pour simplifier les choses "un client ftp". Je coince devant un problème extrèmement bete : Chaque fois que j'envoie une commande (du genre "user user"), le serveur ftp me renvoie une réponse que je capte à l'aide de la fonction recv du C. Cependant, je fais des tests sur un serveur libre linux et lorsque j'envoie la commande "pass password", le serveur me renvoie deux réponses :
1ère réponse :
Code:
230-Welcome, archive user anonymous@localhost !
2ème réponse :
Code:
1 2 3 4 5 6 7
| 230-
230-The local time is: Thu Mar 22 20:28:26 2007
230-
230-This is an experimental FTP server. If have any unusual problems,
230-please report them via e-mail to <root@benji-desktop>.
230-
230 Anonymous access granted, restrictions apply. |
Je vous fais le résumé d'une connexion ftp vers mon serveur pour que vous voyez mieux le problème :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| 220 ProFTPD 1.3.0 Server (Debian) [::ffff:127.0.0.1]
>> user anonymous
331 Anonymous login ok, send your complete email address as your password.
>> pass toto@titi.tutu
230-Welcome, archive user anonymous@localhost !
>> pasv
230-
230-The local time is: Thu Mar 22 20:28:26 2007
230-
230-This is an experimental FTP server. If have any unusual problems,
230-please report them via e-mail to <root@benji-desktop>.
230-
230 Anonymous access granted, restrictions apply.
>> close
227 Entering Passive Mode (127,0,0,1,241,180). |
Dans le code source, je suppose qu'à chaque commande envoyée, j'attend UNE réponse du serveur. J'ai essayé de faire un while (recv() > 0) pour faire un "tant que le serveur répond ..." mais la fonction recv est bloquante et si le serveur n'a rien à renvoyer, le client attend. Je ne sais pas si je suis très clair. Je cherche une solution à ce problème. Merci