Bonjour à toutes et à tous,
Je suis en train de réaliser un petit programme en C sous linux permettant à des clients de se connecter en TCP et j'essaie de récupérer leur message. Du coup dans mon main j'ai :
et ma fonction handle_client :
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 ... ... // clients étant un tableau de structures contenant entre autre le socket des clients et leur thread if ((clients[n].socket = accept(server_socket, (struct sockaddr *) &clients[n].client_struct, &client_struct_length)) < 0) { // erreur ... } else { if (pthread_create(&(clients[n].thread), NULL, handle_client, &n) != 0) { // erreur ... } printf("socket cree"); }
Avec tout ça, je reçois rien et je trouve pas mon erreur.
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 void* handle_client(void * n) { int position_n = *((int *) n); char buffer[32]; int received = -1; char result[1024]; int result_position = 0; received = recv(clients[position_n].socket, buffer, BUFFSIZE, 0); while (received > 0) { /* Check for more data */ strncat(result, buffer, received); result_position += received; received = recv(clients[position_n].socket, buffer, BUFFSIZE, 0); } result[result_position] = '\0'; printf("%s", result);
Si quelqu'un arriverait à m'aider, ce serait sympa.
Merci d'avance
Partager