[C] Problème client FTP

Problème client FTP [C] - Programmation

Marsh Posté le 27-01-2002 à 12:43:56    

Bonjour,
Voici une partie du code de mon prog. C'est un client qui communique avec un serveur ftp. Ici juste la procédure pour envoyer les commande USER et PASS au serveur.
Aucun problème lors de l'envoie de USER mais pb pour le PASS...
Quelqu'un pourrait-il m'aider.
Merci
 
 
void seLogger (int sock)
{
    char tampon [256];
    char tamp [256];
     
    /* récupère le login de l'utilisateur */
    printf("Entrez votre login \n" );
    /* envoi du login */
    lire(tampon);
    bzero(tamp, sizeof(tamp));
    strcat(tamp, "USER " );
    strcat (tamp, tampon);  
    if ( write ( sock ,tamp , strlen ( tamp )) < strlen ( tamp ))
 {
  perror("Ecriture" );
  exit(6);
 }
    /* récupère la réponse du serveur */
    /* remise à zéro du tampon */
 bzero(tampon, sizeof(tampon));
 if (read ( sock, tampon, sizeof(tampon)) <= 0 )
 {
  perror("lecture" );
  exit(7);
 }
    printf("%s\n", tampon);
 if (( tampon[0] == '3' ) && ( tampon[1] == '3' ) && ( tampon [2] =='1';))
    {
        printf("Voter mot de pass est requis, veuillez le rentrer : \n" );
    }
    /* récupère le pass de l'utilisateur */
    printf("Entrez votre mot de passe \n" );
    /* envoi du mot de pass */
    /* l'utilisateur doit rentrer "PASS motdepasse"*/
    lire(tamp);
    if ( write ( sock ,tamp , strlen ( tamp)) < strlen ( tamp))
 {
  perror("Ecriture" );
  exit(6);
 }
 /* remise à zéro du tampon */
 bzero(tampon, sizeof(tampon));
 if (read ( sock, tampon, sizeof(tampon)) <= 0 )
 {
  perror("lecture" );
  exit(7);
 }
 printf("%s\n","Réponse du serveur" );
 printf("%s\n", tampon);
     
}
/* besoin de finir la chaine par CR LF*/
void lire(char * tampon)
{
    fgets(tampon,256,stdin);
    tampon[strlen(tampon)] = '\r';
    tampon[strlen(tampon)+1] = '\n';
}

Reply

Marsh Posté le 27-01-2002 à 12:43:56   

Reply

Marsh Posté le 27-01-2002 à 13:00:37    

sans avoir lu ton code, il serait charmant de dire quel est le pb

Reply

Marsh Posté le 27-01-2002 à 13:03:33    

Exact,
le pb est que lorsque j'envoie la chaine de caractère au sreveur ftp il me renvoie :
530 Please login with USER and PASS
pourtant le user marche bien ( il me renvoie ok, besoin d'un mot de pase maintenant...) Donc, je sais pas trop quoi faire...
Merci

Reply

Marsh Posté le 27-01-2002 à 13:13:33    

tu lis l'input de l'utilisateur dans tampon, qui n'est pas initialisé. ok, fgets() te sort une chaine terminée par \0. MAIS tu remplaces ça par \r\n ... sans rajouter le \0. résultat on se demande ce qu'il envoit (que retourne strlen(tamp) ?), et même comment USER xxx peut marcher.

Reply

Marsh Posté le 27-01-2002 à 13:17:30    

ah non y'a un bzero() qui traîne ...
 
conseil : cleane ton code, c'est infâme. utilise un buffer pour lire les commande de l'utilisateur, un buffer d'envoi, un buffer de réception. + (par ex) une jolie fonction pour envoyer une commande avec des paramètres + une fonction qui analyse la chaîne de retour et extrait le code de retour. etc.

Reply

Marsh Posté le 27-01-2002 à 13:26:12    

Oki, merci du conseil ;)  
J'ai fait ça hier soir tard. Maintenant je me rends compte que c'est pas génial...
Bon je vais séparer tout ça en fonction pour faire plus joli...
Merci de ton aide.
Heu si jamais ça marche toujours pas, je reviens  :pt1cable:

Reply

Marsh Posté le 28-01-2002 à 11:59:19    

fgets c est mal
read c est mieux

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed