J'ai l'application Chat typique.
Le côté client est mis en œuvre en utilisant deux Threads.
Thread1
do {
show menu
read option
case option
1: option1
2: option2
.
.
.
5:end
end case
while (!end)
Le fil 2 :
do {
read message from socket
display message
while (!end)
Un problème est que le Thread1 est trop rapide, donc après avoir traité l'option, il affiche le menu à nouveau avant que le Thread2 puisse afficher son message. J'ai résolu ce problème en mettant le Thread1 en sommeil pendant 1000ms, mais je ne sais pas s'il y a une meilleure façon de le faire.
L'autre est la suivante : lorsqu'un client ne fait rien, il y a juste un message à l'écran demandant une option à traiter. Si un autre client lui envoie un message, alors ce message s'affiche après la promesse, donc l'information est désordonnée : voici un exemple de ce qu'un client verra après avoir reçu un message d'un autre client.
1.- Print users conected
2.- Send message to all
3.- Send message to a user
4.- Quit
Choose an option: Message received from user "david": hello!
Y a-t-il un moyen de régler ce problème ?