serveur tcp multithreadé (de chat) en C sous linux qui ne fonctionne pas
Bonjour il ya trois ans j'ai essayé de faire un serveur tcp multithreadé en C sous linux (de chat) qui ne fonctionne pas je n'ai pas trouvé pourquoi.(de même je vais surement le poster dans la rubrique Qt, j'avais essayé après de faire un serveur multithreadé tcp de chat en C++ Qt et il ne fonctionnait pas non plus).
pourtant j'avais trouvé après des exemples de serveurs tcp multithreadés sous linux sur le net qui avaient l'air dêtre fait de la même manière.j'avais fait aussi des clients tcp mais en c++.
donc je vais ressortir du code au cas ou quelqu un aurait de l'experience ou des suggestions:
dans le main j'ai entres autres :
Code:
ret=tcp_server(port);
dans la fonction
Code:
1 2
| int tcp_server(int port)
{ |
j'ai notamment
Code:
sock=create_socket_stream(NULL,port,"tcp");
plus loin
Code:
linked_sock = accept(sock,(struct sockaddr*)&address,&length);
plus loin
Code:
1 2 3 4
| p[i].socket=linked_sock;
p[i].threadindex=i;
fprintf(stdout,"socket %d accepted\n",linked_sock);
ret=pthread_create(&thread[i],NULL,process_connection,(void *)&p[i]); |
où est defini en global
Code:
1 2 3 4 5
| typedef struct paramthread{
int socket;
int threadindex;
}PARAMTHREAD;
PARAMTHREAD p[MAX_CLIENTS]; |
et dans la fonction de thread process_connection je fais notamment :
Code:
1 2 3
| ptmp=(PARAMTHREAD *)p;
sock=ptmp->socket;
thrdidx=ptmp->threadindex; |
et aussi
Code:
1 2 3 4 5 6
| while(1)/*loop to receive msgs from client*/
{
nb_read=read(sock,buffer,MAXBUFSIZE);
/*........................*/
write(sock,buffer,strlen(buffer)); |
bon voila à peu près...si quelqu un a déja réussi à faire un serveur tcp multithreadé en C sous linux je suis preneur d'idées....