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 : dans la fonction
1 2
| int tcp_server(int port)
{ |
j'ai notamment
sock=create_socket_stream(NULL,port,"tcp");
plus loin
linked_sock = accept(sock,(struct sockaddr*)&address,&length);
plus loin
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
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 :
1 2 3
| ptmp=(PARAMTHREAD *)p;
sock=ptmp->socket;
thrdidx=ptmp->threadindex; |
et aussi
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....
Partager