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
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
int tcp_server(int port)
{
j'ai notamment
Code : Sélectionner tout - Visualiser dans une fenêtre à part
sock=create_socket_stream(NULL,port,"tcp");
plus loin
Code : Sélectionner tout - Visualiser dans une fenêtre à part
linked_sock = accept(sock,(struct sockaddr*)&address,&length);
plus loin
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
ptmp=(PARAMTHREAD *)p;
	sock=ptmp->socket;
	thrdidx=ptmp->threadindex;
et aussi
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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....