Nous sommes actuellement le 25 Avr 2024, 18:14

Le fuseau horaire est UTC-5 heures [Heure d’été]




Publier un nouveau sujet Répondre au sujet  [ 14 message(s) ] 
Auteur Message
 Sujet du message: Chat C++Builder
MessagePublié: 27 Déc 2008, 20:29 
Hors-ligne
Fidèle
Fidèle
Avatar de l’utilisateur

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
 Profil  
Répondre en citant  
 Sujet du message: Re: Chat C++Builder
MessagePublié: 28 Déc 2008, 02:07 
Hors-ligne
Modérateur
Modérateur
Avatar de l’utilisateur

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
 Profil  
Répondre en citant  
 Sujet du message: Re: Chat C++Builder
MessagePublié: 28 Déc 2008, 12:58 
Hors-ligne
Fidèle
Fidèle
Avatar de l’utilisateur

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) :

Image

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
 Profil  
Répondre en citant  
 Sujet du message: Re: Chat C++Builder
MessagePublié: 28 Déc 2008, 16:59 
Hors-ligne
Toujours là!
Toujours là!
Avatar de l’utilisateur

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
 Profil  
Répondre en citant  
 Sujet du message: Re: Chat C++Builder
MessagePublié: 28 Déc 2008, 17:43 
Hors-ligne
Fidèle
Fidèle
Avatar de l’utilisateur

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
 Profil  
Répondre en citant  
 Sujet du message: Re: Chat C++Builder
MessagePublié: 28 Déc 2008, 18:09 
Hors-ligne
Fidèle
Fidèle
Avatar de l’utilisateur

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
 Profil  
Répondre en citant  
 Sujet du message: Re: Chat C++Builder
MessagePublié: 30 Déc 2008, 02:19 
Hors-ligne
Référence
Référence
Avatar de l’utilisateur

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
 Profil  
Répondre en citant  
 Sujet du message: Re: Chat C++Builder
MessagePublié: 30 Déc 2008, 12:13 
Hors-ligne
Fidèle
Fidèle
Avatar de l’utilisateur

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
 Profil  
Répondre en citant  
 Sujet du message: Re: Chat C++Builder
MessagePublié: 30 Déc 2008, 13:38 
Hors-ligne
Référence
Référence
Avatar de l’utilisateur

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
 Profil  
Répondre en citant  
 Sujet du message: Re: Chat C++Builder
MessagePublié: 30 Déc 2008, 14:12 
Hors-ligne
Fidèle
Fidèle
Avatar de l’utilisateur

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 :P ).

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
 Profil  
Répondre en citant  
 Sujet du message: Re: Chat C++Builder
MessagePublié: 30 Déc 2008, 14:19 
Hors-ligne
Fidèle
Fidèle
Avatar de l’utilisateur

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
 Profil  
Répondre en citant  
 Sujet du message: Re: Chat C++Builder
MessagePublié: 30 Déc 2008, 15:42 
Hors-ligne
Toujours là!
Toujours là!
Avatar de l’utilisateur

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 :

Image

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
 Profil  
Répondre en citant  
 Sujet du message: Re: Chat C++Builder
MessagePublié: 31 Déc 2008, 13:27 
Hors-ligne
Fidèle
Fidèle
Avatar de l’utilisateur

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
 Profil  
Répondre en citant  
 Sujet du message: Re: Chat C++Builder
MessagePublié: 31 Déc 2008, 16:31 
Hors-ligne
Toujours là!
Toujours là!
Avatar de l’utilisateur

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
 Profil  
Répondre en citant  
Afficher les messages publiés depuis :  Trier par  
Publier un nouveau sujet Répondre au sujet  [ 14 message(s) ] 

Le fuseau horaire est UTC-5 heures [Heure d’été]


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

Recherche de:
Aller vers :  
cron
Propulsé par phpBB® Forum Software © phpBB Group
Traduction et support en françaisHébergement de site