[c++] Server multi user

Server multi user [c++] - C++ - Programmation

Marsh Posté le 21-12-2002 à 15:44:59    

J'suis en train de me faire un petit serveur multi user mais j'ai un peu de mal à gérer tout ça.
Est-ce que vous avez des sources interressantes ?


---------------
Mieux vaut partir sur des rires de qualités que sur un silence de quantité.
Reply

Marsh Posté le 21-12-2002 à 15:44:59   

Reply

Marsh Posté le 23-12-2002 à 09:32:51    

Ouais, ça serait kool quand même, juste des petites explication sur les sockets pour gérer le multi user.


---------------
Mieux vaut partir sur des rires de qualités que sur un silence de quantité.
Reply

Marsh Posté le 23-12-2002 à 09:58:34    

parce que tu fais des serveurs pour un seul client toi?


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 23-12-2002 à 10:15:05    

Bah non justement j'essaye d'en faire un pour plusieurs, mais je crois que j'ai un problème au niveau de l'utilisation de la socket. Peutx tu m'aider ?


---------------
Mieux vaut partir sur des rires de qualités que sur un silence de quantité.
Reply

Marsh Posté le 23-12-2002 à 14:01:16    

C'est pas compliqué, quand ton serveur accepte (accept()) un client, tu récupères une socket, tu l'associes un thread à cette socket et voilà, t'as ton serveur multi-user. :)

Reply

Marsh Posté le 23-12-2002 à 14:14:13    

Oui c'est ce que j'ai fait mais c'est au niveau de l'envoyage du message à tout le monde que sa foire.


---------------
Mieux vaut partir sur des rires de qualités que sur un silence de quantité.
Reply

Marsh Posté le 23-12-2002 à 18:14:31    

NerOcrO a écrit :

Oui c'est ce que j'ai fait mais c'est au niveau de l'envoyage du message à tout le monde que sa foire.

J'adore ton français ! :D
 
T'as un fonctionnement 1 client = 1 thread avec des recv() bloquant donc une fois que t'as lu des données, faut l'envoyer aux autres puisque ça à l'air d'être un chat, moi je pense que je ferais un thread à part, ayant bien sûr connaissance des sockets clientes et après ton recv() dans le thread client, tu fais un PostThreadMessage() avec en param un pointeur vers les données à envoyer ainsi que le pointeur de ta socket pour éviter que le serveur envoie le message envoyé par le client.. Pense aux structures pour ce dernier point..
 
J'espère avoir été clair :)

Reply

Marsh Posté le 24-12-2002 à 11:34:17    

Ca à l'air bien compliqué ton truc.
Moi j'ai un thread qui tourne en boucle et qui attend les clients. Quand un client ce connecte, un thread se crée pour attendre son message. Quand un message est envoyé par ce dernier, ce même thread renverai à tous les autres connectés, est-ce possible ?
(faut-il faire un tableau de socket ?)


---------------
Mieux vaut partir sur des rires de qualités que sur un silence de quantité.
Reply

Marsh Posté le 24-12-2002 à 12:48:39    

C'est une autre solution, il suffit que tous les threads aient connaissances de la liste des sockets clientes..
A ce moment là, tu passes en paramètre de ton thread la socket associée à ce thread ainsi que la liste des autres sockets, ces 2 choses encapsulées bien sûr dans une structure.. :)

Reply

Marsh Posté le 24-12-2002 à 13:29:41    

Mok, mais c'est au niveau de la structure que je vois pas.


---------------
Mieux vaut partir sur des rires de qualités que sur un silence de quantité.
Reply

Marsh Posté le 24-12-2002 à 13:29:41   

Reply

Marsh Posté le 24-12-2002 à 13:41:20    

bah t'auras une structure de ce type a passer en paramètre de ton thread :
 
struct l_socket{
  socket *ptrSock ;  
  l_socket *ptrNext ;
}
 
struct list_socket{
  socket *ptrMySock ; //Socket associée au thread
  l_socket **ptrList ; // Liste chaînée contenant la liste de toutes les sockets
}
 
Là j'ai pris une liste chaînée mais tu peux très bien utiliser la STL..
C'est + clair ?

Reply

Marsh Posté le 24-12-2002 à 14:21:59    

Ouah!!!, ça devient balèze là.
1/ Je sais pas ce qu'est la STL.
2/ Je vais voir si j'arrive à faire quelque chose avec ta liste.
Merci.


---------------
Mieux vaut partir sur des rires de qualités que sur un silence de quantité.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed