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 :

Condition sur "recv"


Sujet :

Réseau C

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    52
    Détails du profil
    Informations personnelles :
    Âge : 30
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 52
    Points : 29
    Points
    29
    Par défaut Condition sur "recv"
    Bonjour.

    voila j'ai un problème quand je veut spécifier certaine condition de réception sur mon client de tchate.

    je m'explique:

    le client reçois des messages par les autres client qui passe par un serveur.

    lorsque que le client reçois des messages normalement tout se passe bien mais j'ai voulu rendre le client plus agréable et lorsque qu'un nouveau client se connecte ça affiche par exemple "user: babar rejoint la conversation"
    mais je voudrais qu'un sons se joue à se moment, pas très dure sauf que je doit isoler se message particulier qui est traité comme tout les autres messages.

    j'ai voulu faire:
    -si je reçois "user x, rejoint la conversation" alors je joue le song "nwe player"
    -si je reçois d'autre messages différent de celui du dessus alors je l'ais affiche

    voila la source que j'ai faite. Le problème est pour cette condition:
    " if (("user: root, rejoint la conversation.") == 0 ) " je ne sait pas quelle paramètres mettre pour qu'elle s'exécute uniquement en recevant "user: root, rejoint la conversation"

    source:
    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
    while(1)  /* boucle de réception des messages */
       {
     rev: /* pour les goto je sais c'est pas bien mais c'est juste pour les testes */        
     memset(buff, '\0', sizeof(buff)); 
     n = recv(*s, buff, sizeof(buff) - 1, 0); /* je reçois */
     
     if (("user: root, rejoint la conversation.") == 0 ) /* si je reçois "user: root, rejoint la conversation" alors */
     {
           FSOUND_PlaySound(FSOUND_FREE, NwePlayer); /* joue un sons "nwe player" */
           printf("test ok\n"); /* "test ok" s'affiche */
           goto rev;
     }
     
     else /* si je reçois autre chose que "user: root, rejoi..." alors */
     {
         printf("%s\n",buff); /* j'affiche les messages normale */
         goto rev;
     }        
     
       }
    Merci. J'espère mettre fait comprendre

  2. #2
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    j'ai pas vu le goto, j'ai pas vu le goto, j'ai pas vu le goto

    Pour rechercher ta chaine de caractères, il faut le faire avec strcmp() ou memcmp(). strcmp() va faire une recherche exacte (même chaine, même longueur) alors qu'avec memcmp(), tu va pouvoir jouer sur la longueur et ne tester que les n premiers caractères. C'est à toi de voir ce que tu préfères.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if(strcmp(buff, "user: root, rejoint la conversation.") == 0)
     {
           FSOUND_PlaySound(FSOUND_FREE, NwePlayer); /* joue un sons "nwe player" */
           printf("test ok\n"); /* "test ok" s'affiche */
           goto rev;
     }
    Le même test en ne travaillant que sur les 10 1er caractères (par exemple)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if(memcmp(buff, "user: root, rejoint la conversation.", 10) == 0)
     {
           FSOUND_PlaySound(FSOUND_FREE, NwePlayer); /* joue un sons "nwe player" */
           printf("test ok\n"); /* "test ok" s'affiche */
           goto rev;
     }
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    52
    Détails du profil
    Informations personnelles :
    Âge : 30
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 52
    Points : 29
    Points
    29
    Par défaut
    ok Merci.

    J'avais déjà tester la 1er solution sans parvenir à un résulta sauf que je viens de me rendre compte qu'il fallait que j'ajoute "\n" devant user.

    donc ça marche

    Merci

Discussions similaires

  1. [Quote] DVP quoté sur Bashfr
    Par Skyounet dans le forum La taverne du Club : Humour et divers
    Réponses: 16
    Dernier message: 26/09/2006, 18h52

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