|
Consulter les messages sans réponse | Consulter les sujets actifs
|
Page 1 sur 1
|
[ 14 message(s) ] |
|
Auteur |
Message |
Inazad
|
Publié: 27 Déc 2008, 20:29 |
|
Inscription : 19 Sep 2002, 14:29 Message(s) : 572 Localisation : Saint-Georges de Beauce
|
Bonsoir a tous !
Je suis présentement entrain de faire un mini-chat en C++Builder et j'aimerais savoir comment :
- Faire afficher le texte que reçois le serveur a tous les clients connectés. - Faire afficher la liste des users connectés à tous les users (genre Guest1, Guest2...)
J'attends de vos nouvelles !
Merci,
_________________ -+-Inazad-+-
|
|
Haut |
|
|
Procyon
|
Publié: 28 Déc 2008, 02:07 |
|
Inscription : 07 Jan 2002, 15:10 Message(s) : 3551 Localisation : Beauport, Québec
|
pas facile de répondre, ça dépend de ton architecture. Est-ce que tu vas avoir un serveur? Est-ce que tu veux utiliser un protocole reconnu (comme IRC par exemple)?
_________________ Procyon,
Modérateur de la section Trouvailles
|
|
Haut |
|
|
Inazad
|
Publié: 28 Déc 2008, 12:58 |
|
Inscription : 19 Sep 2002, 14:29 Message(s) : 572 Localisation : Saint-Georges de Beauce
|
et bien c'est juste pour apprendre le fonctionnement. J'aimerais que ca ressemble a IRC mais en moins gros evidement . A date, j'ai 1 application qui fait serveur et client. Je n'aurai qu'a faire une application client et voila, le tour y sera joué. Voici a quoi ressemble mon application (tres simple) : J'aimerais savoir comment afficher le texte que le serveur reçois à tous les users connectés ? Ils auraient tous la meme forme mais je ne vois pas comment je pourrai faire afficher tout le texte envoyé au serveur à tous les clients... Comme sur IRC.. J'attends de vos nouvelles ! Merci
_________________ -+-Inazad-+-
|
|
Haut |
|
|
cro
|
Publié: 28 Déc 2008, 16:59 |
|
Inscription : 08 Jan 2002, 14:51 Message(s) : 1337 Localisation : Québec
|
Quand tu as une application client/serveur, le serveur conserve la liste des clients connectés, alors quand il reçoit un message d'un client, il peut l'envoyer à tous les clients de sa liste.
En gros tu devrais avoir un thread sur le serveur qui écoute pour les nouvelles connections, une fois connectés tu ajoutes le nouveau client dans une liste. Quand un client envois un message tu le renvoi a tous les clients de la liste. Tu peux aussi avoir un genre de ping a tous les x min/sec venant du serveur pour s'assurer que les clients sont encore "alive". Sur Codeguru il y en a plusieurs exemples de ce genre, mais en MFC.
|
|
Haut |
|
|
Inazad
|
Publié: 28 Déc 2008, 17:43 |
|
Inscription : 19 Sep 2002, 14:29 Message(s) : 572 Localisation : Saint-Georges de Beauce
|
Hmm ok et comment je fais pour faire afficher la liste des clients a tous les clients ?
Je vais essayer ce que tu me dis, trouvez de quoi.
Merci
_________________ -+-Inazad-+-
|
|
Haut |
|
|
Inazad
|
Publié: 28 Déc 2008, 18:09 |
|
Inscription : 19 Sep 2002, 14:29 Message(s) : 572 Localisation : Saint-Georges de Beauce
|
cro a écrit: Quand un client envois un message tu le renvoi a tous les clients de la liste. J'aimerais bien savoir comment. Comment envoyer le messages recus a tous les clients connectés ? Je ne pense pas que "ServerSocket1->Socket->SendToAllClients(Socket->ReceiveText());" existe.... Si quelqu'un peut m'aider! Merci!
_________________ -+-Inazad-+-
|
|
Haut |
|
|
Jump
|
Publié: 30 Déc 2008, 02:19 |
|
Inscription : 07 Jan 2002, 00:24 Message(s) : 5834
|
je ne sais pas si c'est efficace, mais tu peux conserver un socket par client. donc un array de socket/connexion
_________________ This posting is provided "AS IS" with no warranties, and confers no rights! ©2006 - 2014 Jump
|
|
Haut |
|
|
Inazad
|
Publié: 30 Déc 2008, 12:13 |
|
Inscription : 19 Sep 2002, 14:29 Message(s) : 572 Localisation : Saint-Georges de Beauce
|
Personne ne sait comment résoudre ce petit problème ?
Merci
_________________ -+-Inazad-+-
|
|
Haut |
|
|
Jump
|
Publié: 30 Déc 2008, 13:38 |
|
Inscription : 07 Jan 2002, 00:24 Message(s) : 5834
|
un autre moyen, qui demande moins de ressources serait de:
- conserver le ip et autres infos des clients lors de leur connexion dans un array.
Tu fais le ménage de l'array quand un client envoie un message de déconnexion ou après un timeout de x secondes.
Tu peux aussi envoyer les infos de chaque clients aux clients qui pourront entrer directement en contact avec les clients sans passer par le serveur (chaque client doit alors avoir un minimum de fonctionnalité serveur).
Il y a donc tout pleins de moyen d'y arriver.
Si tu veux être plus solide, cherche des informations sur le protocole IRC (RFC 1459). Particulièrement la section 8.
Le protocole IRC ping les clients a intervalle régulier, pas de réponse = client parti.
_________________ This posting is provided "AS IS" with no warranties, and confers no rights! ©2006 - 2014 Jump
|
|
Haut |
|
|
Inazad
|
Publié: 30 Déc 2008, 14:12 |
|
Inscription : 19 Sep 2002, 14:29 Message(s) : 572 Localisation : Saint-Georges de Beauce
|
Citer: Tu peux aussi envoyer les infos de chaque clients aux clients qui pourront entrer directement en contact avec les clients sans passer par le serveur (chaque client doit alors avoir un minimum de fonctionnalité serveur). Comment faire cela ? Je ne connais personne qui utilise C++Builder. C'est l'outils le plus facile que jai trouvé pour faire de l'objet (je suis encore étudiant en info donc ). Donc, lorsqu'un client se connecte, je garde son ip en memoire . Lorsque le serveur recoit un message texte, il l'envoie a tous les ip connectés sauf celui de lenvoyeur, cest ca ? Et j'aiemerais aussi afficher la liste des users connectés, est-ce le même principe ? merci
_________________ -+-Inazad-+-
|
|
Haut |
|
|
Inazad
|
Publié: 30 Déc 2008, 14:19 |
|
Inscription : 19 Sep 2002, 14:29 Message(s) : 572 Localisation : Saint-Georges de Beauce
|
Car dans le serversocket, j'ai plein d'events :
- OnAccept - OnClientConnect - OnClientDisconnect - OnClientError - OnClientRead (celle qui me permet de faire afficher le text envoyé) - OnClientWrite - OnGetSocket - OnGetThread - OnListen - OnThreadEnd - OnThreadStart
Y'en a juste 2-3 que je suis sur de ce qu'ils peuvent faire, je suis un peu confus et je ne trouve pas vraiment d'aide sur Borland C++Builder...
Si quelqu'un pouvais m'éclairer, merci!
_________________ -+-Inazad-+-
|
|
Haut |
|
|
cro
|
Publié: 30 Déc 2008, 15:42 |
|
Inscription : 08 Jan 2002, 14:51 Message(s) : 1337 Localisation : Québec
|
Je l'ai fait en MFC avec Visual Studio 2008. Avec les fonctions OnAccept, OnClientRead et OnClientWrite je crois que tu pourras reproduite facilement ce que j'ai fait. Alors voici le code et voici un screen shot de ce que ça donne : Donc le serveur ouvre un socket sur le port 1234 en écoute, quand un client se connecte sur ce port le serveur crée un nouveau socket pour ce client et le conserve dans une liste. Quand un client envoi un message, le serveur le retransmet tout simplement a tous les clients de la liste. Bonne chance !
|
|
Haut |
|
|
Inazad
|
Publié: 31 Déc 2008, 13:27 |
|
Inscription : 19 Sep 2002, 14:29 Message(s) : 572 Localisation : Saint-Georges de Beauce
|
Je vais regarder ton code et si j'ai des questions, je te tienderai au courant.
C'est quoi MFC ?
Merci
_________________ -+-Inazad-+-
|
|
Haut |
|
|
cro
|
Publié: 31 Déc 2008, 16:31 |
|
Inscription : 08 Jan 2002, 14:51 Message(s) : 1337 Localisation : Québec
|
Microsoft Foundation Class.C'est une bibliothèque C++ qui encapsules l'API Win32. Malheureusement les MFC ne sont pas disponible avec les versions Express de Visual Studio.
|
|
Haut |
|
|
|
Page 1 sur 1
|
[ 14 message(s) ] |
|
Qui est en ligne ? |
Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 9 invité(s) |
|
Vous ne pouvez pas publier de nouveaux sujets dans ce forum Vous ne pouvez pas répondre aux sujets dans ce forum Vous ne pouvez pas éditer vos messages dans ce forum Vous ne pouvez pas supprimer vos messages dans ce forum
|
|
|
|