-
serveur multi clients
bonjour,
je suis entrain de developper une application serveur multi clients.
Je voudrais savoir :
-la différence entre le mode synchrone et asynchrone? avantages et inconvénients
sachant que dans mon cas le client demande au serveur d'effectuer des calculs qui peuvent être assez longs.
j'ai une idée mais j'ai des doutes
j'ai pensé faire ceci:
dans serveur creer une classe ConnexionClient qui herite de TThread.
à chaque nouveau client accepté par le serveur creer un objet ConnexionClient et lui associer les méthodes de calculs.
-comment envoyer un message à un client précis (lui donner la réponse au calcul demandé)?
le ServerSocket->Socket->Connections est un tableau des sockets connectés à la socket serveur. Comment trouver celle de mon client?
Merci
-
Bonjour,
tu devrais regarder un peu cet exemple :
http://www.developpez.org/club/g3dbu...t/tutoriel.htm
je pense que ca te permettra de cerner un peu mieux les socket ...
quant à ta question concernant l'identification des clients je pense effectivement que la solution est de créer ( à mon avis ) 2 classes :
- TListClient
- TClient(TCustomWinSocket *Socket)
ainsi lorsque tu recois une question d'un client par comparaison tu peux identifier le client dans ta TListClient ... par contre je vois par trop l'utilité de ton TThread la dedans ...
Quant à ta question de synchronisme, je crois que le mieux est d'utiliser une communication synchrone en question/réponse!!!
en espérant t'avoir aidé ...
-
en fait je vois les choses de deux manieres.
Supposons que nous avons plusieurs clients et un serveur.
Chaque client demande au serveur de faire des calculs lourds et lui renvoyer les résultats.
Méthode 1
Quand le serveur accepte un Client il cree une classe TClient
les attributs:
Socket SocketClient;
les méthodes:
LireDepuisClient()
EcrireVersClient()
TraiterCalcul()
TClient hériterait de TThread comme ça , à chaque connexion un thread est attribué au Client et le calcul se fait à l'intérieur de ce thread
Méthode 2:
A chaque connexion de client :
-Faire une liste des clients connectés avec leurs Identifiants:
Un client se connecte, le serveur le rajoute dans la liste, récupère son identifiant et lance le calcul dans un thread, dès que calcul finit , il recherche le client dans la liste et lui envoie la réponse.
Je ne sais pas si il y'a d'autres façons de procèder et quelle solution est la meilleure. Des personnes m'ont dit que Borland TServerSocket gère automatiquement les threads mais je n'ai rien compris entre NonBlocking et Threads
-
Dites moi svp ce que vous en pensez meme si peut être pour vous ce sont des choses faciles!!
-
Bonjour,
Effectivement ta méthode 1 me semble la plus appropriée ... chaque classe TClient est un thread qui contient aussi un TSocketClient ...
Bon courage :wink: