-
Serveur Multi-clients
Bonjour,
J'ai fait un programme serveur et j'aimerai le rendre multi-clients , en faisant des recherches j'ai vu que l'on pouvait utiliser les threads . Le pb c'est que je ne sait pas comment les utiliser .Je tourne avec builder C++ sous Windows merci d'avance pour votre aide .
-
Tu dois effectivement utiliser les threads pour le multiclient
chaque client est un thread que tu instancies lors de sa connection
tu reperes sa connection dans les evenements du socket de communication apr exemple.
Regarde dans les tutoriaux tu trouveras beaucoup d'exemple te guidant dans ta démarche.
-
ok merci je vais regarder , mais dernière questions , est ce que je peut utiliser la classe TThread sachant qu'il sagit d'un serveur merci
-
bien sur la classe tthread peut tout a fait etre utiliser et meme vivement conseiller pour ton thread d'ecoute par exemple
-
Je ne sais pas a kel niveau tu utilise tes connections (socket,protocole TCP/IP,...) mais un truc ki est bien c'est que dans borland tu as les composant indy server. Tu prend par exemple le TCP/IP(serveur) et c'est un composant multithread!
c'est a dire qu'une fois une connection établie avec un client, il effectue le traitement qui se situe dans l'évènement Execute() et ce pour chaque connection.
si tu désir plus d'info n'hésite pas mon projet tuteuré était la création d'un chat en réseau alors je pourrai peut être t'aider :P
-
Bonjour,
un Serveur par définition peut <servir>plusieurs clients
il existe 2 modes distincts de travail
1 Mode Asynchrone
2 Mode Synchrone
dans le premier mode l'emploi de threads n'est pas nécessaire
par exemple dans le composant TServerSocket se trouve la property Connections qui est un tableau de connections avec les différents Clients
dans le mode Synchrone l'emploi de socket est obligatoire sans quoi le thread principal serait bloqué
les composants ICS fonctionnent sous le premier Mode , Les Composants Indy selon le 2 em Mode
pour les composants Natifs de la VCl la séléction des modes se fait par la property
TServerType { stNonBlocking, stThreadBlocking
personellement je préfère travailler de manière asynchrone avec les composants ICS http://www.overbyte.be/frame_index.html
on évite ainsi les bloquages d'applications en cas de plantage inopiné d'un client ou d'une coupure réseau
Cordialement