canigou4 siteman ... | Bonjour, je suis entrain d'essayer de programmer un serveur qui accepte plusieurs clients, chaque clients peut parler, et alors les autres clients connectés doivent recevoir le message, cependant ca ne fonctionne pas vraiment mon code, et c'est plutot bizarre
Voici la partie du serveur qui fait default
A savoir que ca fonctionne, mais de manière etrange je m'explique ... si j'ai trois clients qui se connecte, le derniere clients connecté qui envoit son message, le serveur le retransmet sur les deux autres, si le deuxième client envoit un msg, il sera retransmit uniquement sur le premier client, et si le premier client envoit un msg, personne le recevra..
Don en gros, pour l'instant mon code renvoit le message uniquement aux clients connectés avant le client qui ecrit le message...
Code :
- do{
- listen(sock,10);
- i++;
- sockt[i]= accept(sock, NULL, NULL);
- printf("Valeur de i : %i\n",i);
- fcntl(STDIN_FILENO,F_SETFL,fcntl(STDIN_FILENO,F_GETFL)|O_NONBLOCK);
- fcntl(sockt[i],F_SETFL,fcntl(sockt[i],F_GETFL)|O_NONBLOCK);
- write(sockt[i], msg, sizeof(msg));
- pid = fork();
- if(pid>0)
- {
- do{
- memset(msg2,0,256); //remet à 0 la chaine de caractere
- memset(msg_emis,0,256);
- //ECOUTE LE CLIENT
- if(read(sockt[i],msg2,sizeof(msg2))>0)
- {
- printf("la phrase recue du client est : %s \n",msg2);
- for(j=0;j<=10;j++)
- {
- if(j!=i)
- {
- write(sockt[j],msg2,sizeof(msg2));
- }
- else
- {//Ne fait rien;
- }
- }
- dif = strncmp(msg2,msg_fin,strlen(msg_fin));//compare pour la condition de fin
- }
- }while(1);
- close(sockt[i]);
- }
- else
- {
- }
- }while(1);
|
Merci beaucoup d'avance si quelqu'un trouve la solution |