IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Réseau C Discussion :

problème lors d'un dialogue entre client et serveur


Sujet :

Réseau C

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 13
    Points : 13
    Points
    13
    Par défaut problème lors d'un dialogue entre client et serveur
    Bonsoir,
    Je suis étudiant en informatique (3e année de licence) et nous avons un "petit" projet en réseau qui consiste a faire une sorte de petit logiciel peer to peer.
    L'une des 1ère étape donnée par le professeur et de faire communiquer client et serveur afin que le client demande la liste des fichiers disponibles sur le serveur et le serveur lui envoie les noms des fichiers.

    Le sujet en entier :
    http://lil.univ-littoral.fr/~boumaza...o/Reseaux/tp02

    Après plusieurs essais je commence a craquer parce que lorsque je teste ça marche très mal : le client semble envoyer la demande de list, le serveur la recevoir mais ne fait pas ce qu'il devrait faire.
    Je me demande si je n'ai pas fait une erreur "bête" ou si je suis vraiment nul

    Si quelqu'un a le courage de regarder les deux fichiers joints pour me donner une piste de recherche pour que cela marche
    Merci de votre aide
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 326
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 326
    Points : 36 844
    Points
    36 844
    Par défaut
    Je ne pense pas que cela t'aidera beaucoup que nous fassions ton boulot.
    Pour essayer d'avancer, il faut que du structure ton code:
    1 - ça améliorera la lisibilité
    2 - tu va l'enrichir en ajoutant des "feuilles" et donc tester petit à petit,
    3 - ajoute des DEBUG conditionnels pour que ca affiche des informations...
    4 - jettes un oeil a GDB, ca fait partit des outils de base

    Côté client - une structure basique pourrait être
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    int main(void)  
    {
     
        sd = srv_connect(srv_address, srv_port);
        // if sd == 0 bye
        do_dialog(sd);
        status = srv_quit(sd);
        //...
    }
    Côté serveur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    int main (void)
    {
         sd = srv_init()
         mainloop(sd);
    }
     
    void mainloop(int srv_sd)
    {
     
         while (1) {
              sd = accept (srv_sd, ....)
              ....
              handle_client(sd);
         }
    }
     
    void handle_client(int sd)
    {
         ....
         while (1) {
               cmd = read_command(sd);
               switch (cmd) {
                   case quit: send_ok(sd); return;
                   default: // erreur??
     
         }
    }
    -W

  3. #3
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par Dave62 Voir le message
    Si quelqu'un a le courage de regarder les deux fichiers joints pour me donner une piste de recherche pour que cela marche
    Serveur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      inet_aton("0.0.0.0", &adr_serveur.sin_addr); /* on fixe l'ip sur laquelle on ecoute */
    Ceci n'a aucun sens. C'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
             /* automatic IP address */
             adr_serveur.sin_addr.s_addr = htonl (INADDR_ANY);
    (j'ai remplacé les write(), bricolage, par des send() officiels...)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                num_ecrit = send (sock, fin, strlen (fin), 0);
    C'est pas le bon socket...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                num_ecrit = send (sock_effective, fin, strlen (fin), 0);
    La réception n'est pas bouclée. elle ne traite qu'une commande et retombe sur accept()... Il faudrait un thread bouclé par client...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /* Soit le serveur attends un client, soit il "discute" avec */
    Pour ça, il faudrait un 'select()'. C'est complexe. Un thread est plus simple...

    Client :

    Apparemment, RAS.

    Ceci a l'air de fonctionner correctement chez moi (Windows en local)

    http://delahaye.emmanuel.free.fr/forums/dave62/

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 13
    Points : 13
    Points
    13
    Par défaut
    Merci infiniment !!!
    J'avais trouvé une solution mais c'était vraiment moins bien, je vais étudier ce que vous nous avez donné pour savoir comment "bien" programmer en du réseau en C

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 22/09/2013, 00h37
  2. Problème lors q'une comparaison entre 2 valeurs
    Par Xenonmax dans le forum Android
    Réponses: 2
    Dernier message: 15/11/2011, 14h17
  3. un problème lors d'une navigation entre les page
    Par mrprogram dans le forum JSF
    Réponses: 3
    Dernier message: 28/05/2009, 17h00
  4. problème d'envoi de texte entre clients
    Par Doulim dans le forum C
    Réponses: 5
    Dernier message: 27/04/2009, 12h49
  5. [ODBC] Problème entre client windows, serveur windows
    Par Mascotte dans le forum Installation
    Réponses: 13
    Dernier message: 13/09/2006, 12h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo