MYFTP :: FTP EN C SOUS UNIX

cs_Spawnrider Messages postés 254 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 9 avril 2007 - 17 avril 2006 à 16:51
cs_Spawnrider Messages postés 254 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 9 avril 2007 - 23 mars 2007 à 02:00
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/37096-myftp-ftp-en-c-sous-unix

cs_Spawnrider Messages postés 254 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 9 avril 2007 1
23 mars 2007 à 02:00
@evo11wrc : Désolé pour ce petit soucis de fichier, je ne sais pas trop ce qu'il a pu se passer.
Cela dit, c'est corrigé ;)
evo11wrc Messages postés 1 Date d'inscription samedi 17 juin 2006 Statut Membre Dernière intervention 22 mars 2007
22 mars 2007 à 21:56
votre fichier n'est pas valide
on a besoin de fillezella pour avoir un code valide
attendre votre reponse
merci
cimcim Messages postés 31 Date d'inscription mardi 11 janvier 2005 Statut Membre Dernière intervention 29 juillet 2010
20 juil. 2006 à 13:16
De rien, c'est normal, et en meme temps, moi ca m'aide !!! ;)
Je complete mon message pour dire qu'il faut également ajouter la relecture des données envoyées dans les fonctions get_file et send_file...
Et après, tout à l'air de rouler !!!
cs_Spawnrider Messages postés 254 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 9 avril 2007 1
20 juil. 2006 à 12:31
Je te remercie beaucoup de l'aide et de l'attention que
tu apportes à ce programme :)

Je n'avais pas l'erreur sous Mandrake et CygWin.
Cependant, l'astuce que tu préconnises doit être aussi valable pour (K)ubuntu...:)
cimcim Messages postés 31 Date d'inscription mardi 11 janvier 2005 Statut Membre Dernière intervention 29 juillet 2010
20 juil. 2006 à 10:58
oki, j'ai trouvé ce qui n'allait pas....
en fait, après avoir fermé la socket, il faut relire ce que le serveur envoie...
donc, après le
"close(current.dat_d);"
il faut ajouter :
"long_chaine = recv(current.com_d,cmd,sizeof(cmd),0);
cmd[long_chaine-2]='\0';
code = atoi(str_sub(cmd,0,2));
printf("%s\n",cmd);"
et à la fin de la transaction, on obtient cette sortie écran :
"226 Transfer complete.
ftp> "
voila... en espérant que ca aide quelqu'un...
CimCim
cimcim Messages postés 31 Date d'inscription mardi 11 janvier 2005 Statut Membre Dernière intervention 29 juillet 2010
20 juil. 2006 à 09:56
Salut Spawnrider
et merci pour ta source qui m'aide bien... Par contre, j'ai une remarque...
Je suis sous Debian Sarge (moi aussi) et la connexion à un serveur ftp passe sans problème. Après quoi, je peux faire un ls. Mais un seul.... En effet, si je refait un 2eme ls, il n'entre jamais dans le "if(code==227){..." car code vaut 200...
Je pense qu'il doit manquer un cmd_recv quelque part, car une fois la transaction terminée, je recois un code 226 qui n'est pas traité, mais qui fait que j'ai un code de retard par rapport au if...
Voila, si tu as réussi a comprendre ma question, pourrais tu m'aider ?
Merci !!
cs_Spawnrider Messages postés 254 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 9 avril 2007 1
15 mai 2006 à 01:11
Bonjour Romaric,
Non je n'ai absolument pas de code pour une partie serveur.
C'est un client FTP simple.
Ta plateforme ne change rien au résultat escompté du fait que tu recompiles tes sources sur ta plateforme.
Si tu as une connection refusée, c'est soit que tu n'est pas connecté à un serveur ou que le serveur te refuse la connection. Cela dit, je n'exclus pas une alerte du type "Connection refusé" sur une commande de type ls ou transfert de fichier sur le canal de données en mode actif.
Mais normalement vu que tu n'as surement pas mis cette option en parametre du client ftp, cela devrait fonctionner correctement.

J'ai testé avec succés par proxy (Janaserver2), Filezilla, ftpserv, u-serv, 1 ftp de ma machine.
J'ai meme recompilé les sources sur Cygwin avec succés...

Si tu as d'autres questions n'hesites pas...
je tiens à préciser que ce ftp est mis en ligne en vue de l'étude des sources, d'une eventuelle amélioration ou tout autre chose du même type et non prévue pour une utilisation normale de transfert de fichiers.
Je ne suis pas responsable des pertes de fichiers dû à un probléme de transfert...

Yohann
rask Messages postés 3 Date d'inscription dimanche 18 avril 2004 Statut Membre Dernière intervention 14 mai 2006
14 mai 2006 à 15:55
je voudrais ajouter que j'utilise Debian sarge
A +
Romaric
rask Messages postés 3 Date d'inscription dimanche 18 avril 2004 Statut Membre Dernière intervention 14 mai 2006
14 mai 2006 à 14:43
Bonjour je n'arrive pas à l'exécuter sur ma machine. Il me dit que la connexion a été refusée. Je voudrais aussi savoir s'il n'y a pas un code pour la partie serveur et un autre pour la partie client. Merci de m'aider.
A plus

Romaric
cs_Spawnrider Messages postés 254 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 9 avril 2007 1
13 mai 2006 à 23:57
Et bien tu peux télécharger la derniere version ici ou poster sur mon forum sur le site http://www.spawnrider.net.

Bien que la version présente ici soit effectivement la derniere en date :)

Bonne soirée
+++
rask Messages postés 3 Date d'inscription dimanche 18 avril 2004 Statut Membre Dernière intervention 14 mai 2006
13 mai 2006 à 21:33
Bonsoir je veux que tu m'envoies la dernière version de ton code.
Du courage

romaric
rask9@yahoo.fr
cs_Spawnrider Messages postés 254 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 9 avril 2007 1
10 mai 2006 à 02:10
Mise à jour effectuée !
Je n'ai pas utilisé la fonction getpass() [depreciée !]...

;)
cs_Spawnrider Messages postés 254 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 9 avril 2007 1
28 avril 2006 à 06:29
Bon apparement pour getpass, c'est obsoléte et déconseillé donc je ne l'utiliserais pas...
Sinon, je viens de finir le mode actif et le mode passif/proxy et ça fonctionne...
J'upload dès que possible ;)
cs_Spawnrider Messages postés 254 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 9 avril 2007 1
18 avril 2006 à 01:09
Autant pour moi,
aprés une verifion :
man 3 getpass http://www.maconlinux.net/linux-man-pages/fr/getpass.3.html
Je viens de trouver mon bonheur ...

Par contre, pour le mode actif, je dois récuperer mon IP internet, celle fourni par ma passerelle et non celle de ma carte ethenet. Quelqu'un sait-il comment faire ?
J'ai entendu parler de getsockname.....

Merci à vous ;)
cs_Spawnrider Messages postés 254 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 9 avril 2007 1
18 avril 2006 à 01:07
Merci à toi, c'est exactement ce dont j'avais besoin...
getpass("");
...
c'est quoi comme fonction ?
C'est une fonction a toi ou une fonction d'une bibliotheque C ANSI?
Merci en tout cas ;)
kinjiro Messages postés 7 Date d'inscription vendredi 28 février 2003 Statut Membre Dernière intervention 17 avril 2006
17 avril 2006 à 21:52
Salut j'ai regardé tres vite tes sources apres avoir regardé ton screenshot.
Dans le screenshot j'ai remarqué que l'on voyai le pass que tu insérais.
Je te conseil de ne pas utiliser un scanf pour un mot de pass (si une personne passe derriere ton
dos, li l'ecran il connaitra le mot de pass).

Donc dans fonction.c

change:

char pass[255];
printf("Mot de passe pour %s :",user);
scanf("%s",pass);

par:

char *pass;
pass = (char *)malloc(255);
printf("Mot de passe pour %s :",user);
pass = getpass("");

Comme cela lors de la saisie du mot de pass rien ne s'affiche et aucun risque de te faire voler ton
mot de pass. En ce qui concerne le reste des sources je n'ai pas tout regardé.
Si je remarque d'autre petite chose du genre je t'en ferai part.
cs_Spawnrider Messages postés 254 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 9 avril 2007 1
17 avril 2006 à 18:10
Juste pour dire que :
Le fichier select.c n'a rien à faire dans l'archive...
cs_Spawnrider Messages postés 254 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 9 avril 2007 1
17 avril 2006 à 16:51
Avis aux etudiants de l'IUP de Rouen :
il n'est pas la peine de faire un copier/coller de mon code sans en modifier une grande partie.

Vous pouvez tout de même vous en inspirez...
Rejoignez-nous