CHAT CLIENT/SERVEUR AVEC WSAEVENT EN CONSOLE

Signaler
Messages postés
100
Date d'inscription
jeudi 1 avril 2004
Statut
Membre
Dernière intervention
9 juin 2014
-
Messages postés
100
Date d'inscription
jeudi 1 avril 2004
Statut
Membre
Dernière intervention
9 juin 2014
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/28432-chat-client-serveur-avec-wsaevent-en-console

Messages postés
100
Date d'inscription
jeudi 1 avril 2004
Statut
Membre
Dernière intervention
9 juin 2014
1
ben en fait la file d'attente, comme son nom l'indique, permet d'autoriser un certain nb de connexion en attente.
en gros sur ce programme, une variable limite le nb d'utilisateur à 2. du coup lorsque 2 personnes sont connectées (le client + le serveur) plus personne ne peut se connecter.

la file d'attente permet à d'autres clients potentiels de se mettre en attente de connexion, cad que le serveur prendra leur connexion dès que le client en cours se sera déconnecté.
si la file d'attente est pleine, alors le client ne peut pas se connecter et sa fonction connect retourne....

par contre il est clair que les wsaevent sont inutiles et tres compliqués pour ce que j'en fait dans ce prog, mais c'etait juste pour apprendre.

pour ton prog de chat, tu pourra surement bcp l'améliorer si tu utilises des threads ou si tu utilises les mfc.
en effet, je ne protege pas l'accès à la console, donc si on recoit qqch pdt que l'on ecrit, les données sont perdues. avec les mfc, c'est plus facile de gérer ce genre de pb (grace aux champs de textes).


voila j'espère que j'ai été clair, si y'a un gosu du reseau qui voit que j'ai dit une betise, qu'il n'hésite surtout pas, mais bon ca devrait aller en principe...
Messages postés
158
Date d'inscription
samedi 31 janvier 2004
Statut
Membre
Dernière intervention
12 mars 2009

Salut je débute un peut dans la programmation reseaux.J'aimerai savoir à quoi sert la file d'attente de 5
en fait j'ai globalemant compris ce qui ce passe mais dans les détaille je pige pas trop.j'ai fait moi même un petit programme de chat mais il fonctionne comme un talkywalky i.e le client parle et le server attend de recevoir avant de pouvoir parler à son tour et vise versa. j'ai donc été interressé par ta source mais je ne vois pas trop comment fair pour mon prog à moi.
sinon c'est pas mal
Messages postés
100
Date d'inscription
jeudi 1 avril 2004
Statut
Membre
Dernière intervention
9 juin 2014
1
j'ai fait une correction:
comme je peux pas retirer les case du tableau puisqu'il est statique, je décale à la fin les cases event et socket (en mm tps pour pas perdre l'ordre) à '0' (correspondant aux connexions fermées). comme ca si on a plus de 2 connexions, la fonction devrait bien marcher...

void CReseau::CompressArray()
{
SOCKET temps;
WSAEVENT tempe;
int i;

for (i=0; i<EventTotal+1; i++)
{
if ( SocketArray[i] == 0 && EventArray[i] == 0)
{
temps = SocketArray[EventTotal];
SocketArray[EventTotal] = SocketArray[i];
SocketArray[i] = temps;

tempe = EventArray[EventTotal];
EventArray[EventTotal] = EventArray[i];
EventArray[i] = tempe;
}
}
}



sinon aucun commentaire sur le code ou la gestion de threads??
Messages postés
100
Date d'inscription
jeudi 1 avril 2004
Statut
Membre
Dernière intervention
9 juin 2014
1
en effet.
par contre dans ce cas precis ca marche puisque le nb d'utilisateur est limité à 2.
bon je recorrige...

merci.
Afficher les 7 commentaires