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

C++Builder Discussion :

R�ponse d'un serveur � plusieurs clients


Sujet :

C++Builder

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    20
    D�tails du profil
    Informations personnelles :
    �ge : 41

    Informations forums :
    Inscription : Mai 2006
    Messages : 20
    Par d�faut R�ponse d'un serveur � plusieurs clients
    Bonjour,
    j'ai cr�e une application client/serveur. Le serveur accepte la connexion de plusieurs clients sans probl�me.
    Par contre j'aimerais que lorsque je re�ois une requ�te d'un client, le serveur r�ponde � l'ensemble de clients connect�s et pas seulement � l'emetteur de la requ�te. C'est possible ? Merci.

  2. #2
    Expert confirm�

    Avatar de pottiez
    Homme Profil pro
    D�veloppeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activit� : D�veloppeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par d�faut
    Quels composant utilise tu ?
    Si c'est des composants TServerSocket et TClientSocket, la solution est la suivante :
    Dans l'evenement OnClientRead du composant TServerSocket tu met ce code :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    int i ;
    AnsiString texte = Socket->ReceiveText() ;
    for(i=0;i<ServerSocket1->Socket->ActiveConnections;i++){
      ServerSocket1->Socket->Connections[i]->SendText("Le texte à envoyer") ;
    }
    Voila
    A plus

  3. #3
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    20
    D�tails du profil
    Informations personnelles :
    �ge : 41

    Informations forums :
    Inscription : Mai 2006
    Messages : 20
    Par d�faut
    Merci beaucoup de ta r�ponse.

    Le principe recherch� :
    Le client demande � jouer un son � l'appui d'une touche.
    Le serveur r�cup�re le nom du fichier � jouer et l'envoi � tous les clients afin qu'ils lancent la lecture de ce son.

    J'ai test� le code que tu m'a donn�.
    Maintenant quand j'appuis sur une touche, il n'y a qu'un pc qui joue les sons m�me quand on les demande d'un autre pc. Il ne doit surement pas manquer grand chose pour que la lecture se fasse en simultan� sur tous les clients...

    Code serveur - m�thode de r�ception :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     AnsiString recept;
            int i ;
     
            recept = Socket->ReceiveText();
            StatusBar1->SimpleText = "Requête cliente reçue";
            Memo1->Lines->Add(recept);
     
            for(i=0; i<ServerSocket1->Socket->ActiveConnections; i++)
            {
                    ServerSocket1->Socket->Connections[i]->SendText(recept);
            }
    COde client - m�thode de r�ception :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    AnsiString recept;
            recept = Socket->ReceiveText();
     
            if (recept == "excellent")
                    PlaySound("Audio\\excellent.wav", NULL, SND_SYNC);
            if (recept == "benny")
                    PlaySound("Audio\\benny.wav", NULL, SND_SYNC);
    Normalement avec ton code, le nom du wav est envoy� � chaque client puis lu. Mais �a n'a pas l'air de marcher puisque la lecture ne se fait que chez un client.

  4. #4
    Membre Expert
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activit� : Responsable de compte
    Secteur : High Tech - Op�rateur de t�l�communications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Billets dans le blog
    1
    Par d�faut
    bonjour
    il n'est pas n�cessaire d'utiliser la propri�t� connection pour recevoir et r�pondre a des requ�tes sur les socket
    je joins un exemple pour t'en convaincre
    cordialement
    Fichiers attach�s Fichiers attach�s
    vous trouverez mes tutoriels � l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les r�gles du forum

  5. #5
    Expert confirm�

    Avatar de pottiez
    Homme Profil pro
    D�veloppeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activit� : D�veloppeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par d�faut
    Citation Envoy� par Reven777
    Merci beaucoup de ta r�ponse.

    Le principe recherch� :
    Le client demande � jouer un son � l'appui d'une touche.
    Le serveur r�cup�re le nom du fichier � jouer et l'envoi � tous les clients afin qu'ils lancent la lecture de ce son.

    J'ai test� le code que tu m'a donn�.
    Maintenant quand j'appuis sur une touche, il n'y a qu'un pc qui joue les sons m�me quand on les demande d'un autre pc. Il ne doit surement pas manquer grand chose pour que la lecture se fasse en simultan� sur tous les clients...

    Code serveur - m�thode de r�ception :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     AnsiString recept;
            int i ;
     
            recept = Socket->ReceiveText();
            StatusBar1->SimpleText = "Requête cliente reçue";
            Memo1->Lines->Add(recept);
     
            for(i=0; i<ServerSocket1->Socket->ActiveConnections; i++)
            {
                    ServerSocket1->Socket->Connections[i]->SendText(recept);
            }
    COde client - m�thode de r�ception :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    AnsiString recept;
            recept = Socket->ReceiveText();
     
            if (recept == "excellent")
                    PlaySound("Audio\\excellent.wav", NULL, SND_SYNC);
            if (recept == "benny")
                    PlaySound("Audio\\benny.wav", NULL, SND_SYNC);
    Normalement avec ton code, le nom du wav est envoy� � chaque client puis lu. Mais �a n'a pas l'air de marcher puisque la lecture ne se fait que chez un client.
    Essaye de mettre plusieurs client en d�bugage pour voir si ils recoive bien la trame du serveur ou non, si tu ne peut pas, alors met un TLabel sur ta Form et affiche toute les requetes recu par le client dedans, comme ca tu vera si il recoit bien la trame ou non.

  6. #6
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    20
    D�tails du profil
    Informations personnelles :
    �ge : 41

    Informations forums :
    Inscription : Mai 2006
    Messages : 20
    Par d�faut
    Je test le d�bug demain, merki.

    Tous mes clients re�oivent bien la r�ponse du serveur (c'est d�j� �a).
    Mais... il n'y a qu'un client qui joue le fichier son !
    Est-ce d� � une mauvaise utilisation de la fonction PlaySound() ??
    A quoi correspondent les param�tres de la fonction SND_SYNC, SND_ASYNC, SND_NOSTOP, etc... ?? J'ai laiss� par d�faut, SND_SYNC.
    Merci.

  7. #7
    Expert confirm�

    Avatar de pottiez
    Homme Profil pro
    D�veloppeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activit� : D�veloppeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par d�faut
    A tu bien les fichiers son sur chaque postes?
    Si tes fichier son sont enregistr� dans le r�pertoire Audio, qui lui se trouve dans le m�me repertoire que ton .exe alors il faut mettre ceci :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    PlaySound(Application->ExeName + "\\..\\audio\\nomDuFichierWav.wav",NULL, SND_SYNC);

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. un serveur /plusieurs clients
    Par Bathou dans le forum R�seau
    R�ponses: 43
    Dernier message: 20/11/2012, 17h37
  2. r�ponse d'un serveur � un client
    Par GerardJ dans le forum Web & r�seau
    R�ponses: 3
    Dernier message: 11/11/2008, 14h21
  3. Script serveur , plusieurs clients
    Par youcef81 dans le forum Programmation et administration syst�me
    R�ponses: 0
    Dernier message: 06/11/2007, 15h04
  4. R�ponses: 72
    Dernier message: 05/12/2005, 10h45
  5. Plusieurs clients et un serveur
    Par mzt.insat dans le forum D�veloppement
    R�ponses: 2
    Dernier message: 13/10/2005, 15h01

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