bonjour à tout le monde

dans mon projet de créer un tchat il faut que j'applique sur le client un thread qui exécute une autre fonction qui doit lire les messages.

Hors je doit mettre la fonction en dehors de "main" et la fonction pour lire les messages ne reconnais plus aucune variables ni même les sockets.
Comment puis-je faire ? utiliser les mutex ? de plus je ne sais pas trop comment mettre en place cela surtout que le thread gère une boucle infinie.

voila déjà se que j'ai fait pour le moment. (je vous ais mis seulement les parties qui posent problème car sinon c'est trop long)

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
void* message(void* data);
 
 
int main(int argc, char *argv[])
{
 
/*
 
..............Variables et socket................
 
*/
 
pthread_t thread;/* crée un thread */
pthread_create(&thread, NULL, message, NULL);/* Permet d'exécuter le fonction message en parallèle */
 
while (1)
{ /* début boucle wirthe */
 
system("CLS");
 
printf("\n%s : ", pseudo);
 
    fgets(chaine, sizeof chaine, stdin);
    clean(chaine);
 
 
    snprintf(buffer, sizeof(buffer), "%s : %s \n", pseudo, chaine);
 
   send(s, buffer, strlen(buffer), 0); 
 
    if  ( strcmp( chaine, "exit" ) == 0 )
    { 
 
       goto fin; /* je sais goto c'est pas bien mais c'est juste pour faire les testes en attendant :p */
 
    }  
} /* fin boucle writhe */  
pthread_join(thread, NULL);
 
/*
.........fermeture socket..............
*/
 
return o;
}
 
void* message(void* data); /* Fonction de réception de message */
      {
   while(1)  /* boucle de réception des messages */
   {
 memset(buffer, '\0', sizeof(buffer));
 n = recv(s, buffer, sizeof(buffer) - 1, 0);
 printf("%s\n",buffer);
   }
      } /* Finc de la fonction de réception des messages */
Merci.