[Linux] Problème Socket + Thread
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 :
Code:
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");
} |
et ma fonction handle_client :
Code:
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); |
Avec tout ça, je reçois rien et je trouve pas mon erreur.
Si quelqu'un arriverait à m'aider, ce serait sympa.
Merci d'avance