Threads

Fermé
emira Messages postés 3 Date d'inscription samedi 10 février 2007 Statut Membre Dernière intervention 14 décembre 2007 - 14 déc. 2007 à 00:38
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 - 14 déc. 2007 à 09:55
Bonjour,
j ai un gros problème, dans un tp de client/serveur le client adipose âpres l'exécution de la classe qui lui concerne interface quand je click sur le bouton "connexion" un thread se lance pour distanciation d'une autre fenêtre (ou il y en a les champs message à envoyer et une zone pr voir les messages reçus par les otres client en ligne)cette dernire à son lancement crée un thread qui s occupe de la reception des message des clients mais le probleme c ke dans l'exécution dés ke je clik sur "connexion" l 'interface se bloque et ne débloque que sije ferme le serveur. PLEASE HELP i NEED your help
THANK U
A voir également:

1 réponse

kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
14 déc. 2007 à 09:55
Bonjour,

Ce genre d'erreur doit certainement venir du fait que ton interface cliente n'est pas indépendante tu programme client lui-même.
Si je ne me trompe pas, ton client attends une réponse du serveur, et pour cette raison il est bloqué jusqu'à ce qu'il réceptionne une réponse.

Pour bien faire, dans une application cliente il faut toujours dissocier la partie interface et la partie "programme" (tout ce qui est fonctionnel).
Par exemple, plutot que de lancer une programme qui fait à la fois du traitement et de l'interface, je te conseille de mettre en place une classe pour l'interface (tout ce qui concerne l'affichage), une classe pour le traitement (lancement du prog, initialisation des données, fonctions de connexion au serveur, fonctione d'envoi / réception de messages, etc.).

Au niveau de la connexion au serveur, lorsque ton prog se connecte, cela doit avoir pour conséquence de créer une liaison entre le client et le serveur (Socket) et c'est tout. Tu peux alors mettre en place un petit thread client qui sera chargé d'écouter tous les messages qui arrivent du serveur par cette liaison, et exécuter différent code selon la nature du message (connexion / déconnexion d'un autre client, envoi d'un message à afficher sur l'interface, etc.)
Pour ce qui est de l'envoi de message du client au serveur, il suffit de créer une fonction qui utilise cette Socket de connexion pour envoyer le message en question au serveur.

Ce qui veut donc dire que coté serveur, il te faut :
- 1 thread général qui écoute en boucle sur un certain port à une certaine adresse, et qui créer un nouveau thread "client" (chargé de s'occuper du client) lorsqu'un client se connecte. C'est ce thread "client" qui sera chargé de discuter avec le programme client, c'est à dire de réceptionner les messages que le client envoi et de le renvoyuer à tous les clients connectés.

Voilà, j'espère que cela t'as éclaircie un peu la manière de voir comment faire pour que ton programme de chat fonctionne sans être "bloqué".
0