Partage
  • Partager sur Facebook
  • Partager sur Twitter

Equivalent à de VB en C ?

Sujet résolu
    18 février 2006 à 2:15:41

    Salut a tous !

    Premièrement merci de prendre le temps me lire ^^

    Bien voila, quand je programmais en VB, et que j'utilisais les winsocks, il existait un "condition" que j'aimerai refaire en C.

    Cette condition c'est
    Private Sub OnDataArrival()

    Qui enffet été appelé dés que le socket recevais une info !

    Je veux m'en servire pour dialoguer avec un serveur FTP.

    Genre :
    Client : Bonjours
    Serveur : 220
    Client : USER
    Serveur : 331
    Client PASS
    Serveur : 230
    Client SYST
    Serveur : 215
    Client : FEAT
    etc...

    Enffet aprés je veux dire si le serveur me dis 220, je dis USER mon_pseudo, si il me dis 331, je lui répond PASS mon_mot_de_pass etc..

    Est ce possible ?? Quelqu'un saurais le faire ? :o


    Moi j'ai déjà ca comme code qui marche nickel mais faudrais qu'il soit appelé dés que le socket recoit un message :

           
    int fdSock;
    char zone_rec[256];

    /* Lecture de la reponse pour poursuite du dialogue avec le serveur */
    bzero(zone_rec,sizeof(zone_rec));

      if (read(fdSock,zone_rec,sizeof(zone_rec)-1) == -1)
      {
            perror("Echec lors du read()");
                    return 1;
      }
     
      /*
       * Ici on affiche le message du FTP contenu
       * dans la variable zone_rec
       */

      printf("%s\n",zone_rec);

      /*
       * Ceci correspond à une fonction créé au paravant
       * qui récupé les 4 premiers caractères pour avoir
       * le numéro de code FTP ( 220 etc.. )
       */

      left(zone_rec, 4);

      /*
       * codeFTP est une variable au tout début
       * initalisé en tant que char de taille 256
       * qui sert de buffer pour enregistrer les
       * caractères que l'on veut garder ( 4 )
       */

      printf("%s", codeFTP);



    MERCI a vous a tous qui m'aidrai !!! ^^
    • Partager sur Facebook
    • Partager sur Twitter
      18 février 2006 à 8:29:29

      Tu pourrais utiliser tout simplement les commandes de lecture avec attente ?
      Comme fgets par exemple, tu attends une info et quand elle arrive le reste du programme continue.

      (je ne connait pas trop les sockets en C mais à mon avis c'est comme ça qu'il faut procéder)
      • Partager sur Facebook
      • Partager sur Twitter
        18 février 2006 à 14:12:31

        A oui c'est pas bête !

        Tu veux dire que je devrais faire un While tant que fgets est vide.
        Et dés que fgets à recue une info, hop il appelle ma fonction qui va lire, interpreter et répondre ?

        Bon je me renseigne sur ce fgets et voire comment je pourrais faire.

        Merci pour ton aide ! ^^

        EDIt : OK c'est bon ! ^^

        J'avais pas imaginé cette méthode, mais enffet, j'ai créé une fonction dans une boucle while qui gère TOUT le dialogue avec le serveur FTP. Donc je l'appele 1 fois et aprés elle fais tout ! Et quand j'aurai téléchargé la liste des fichiers, et que j'aurai recu le dernier code ( 226 ) je stope la boucle !

        Donc c'est ok !

        Le seule truc que j'ai, c'est que je veux envoyer l'adresse IP du serveur à ma fonction... et la ca bloque un peu .. et y a une subtilité que je ne doit pas connaitre :-°

        Donc, voila, au début mon code résoud le nom du serveur par la commande gethostbyname(). Et il rentre l'info dans une structure qui est déclaré de cette manière :
        struct hostent      *adrIp;

        Donc là on as, d'aprés le cours de Matéo, un Pointeur de structure.

        Comment puis je envoyer mon adresse IP dans ma fonction ?
        Ma fonction :
        char DialogFTP ( int fdsock, char adresseIP );
        • Partager sur Facebook
        • Partager sur Twitter

        Equivalent à de VB en C ?

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown