Bonjour,
Je sais qu il y a eu pas mal de topic dessus. Mais je donner les information sur mon implementation et avoir vos opinions.
J ai un server qui est connecte sur un seul port, et j aimerai qu il dialogue avec plusieurs clients.
Au depart je penser creer un thread pour chaque client et ensuite le detruire. Mais cela risque d etre couteux a chaque fois de creer un thread et de le detruire surtout si le nombre de client est grand.
J ai donc opte pour le la creation de X threads, et si ces X threads sont tous occupe, alors on attend la terminaison de l un.
Pour gerer cela, je creer une file qui sera rempli par la main et les thread (de maniere exclusive) prendrons un element de la pile.
Pour la reception des messages :
ca serai le main qui s occuperait de receptionner le message et lancerai un thread pour avec les donnees a traiter.
Pour l envoie des messages :
Je pense que la meilleure chose a faire et que se soit les thread qui envoie les message aux clients.
Evidement je devrais utiliser un mutex pour pouvoir lire et ecrire.
Mais une chose me tracasse, j ai peur le le main recois trop de message et ne laisse pas assez le tps au thread d envoyer les donnees. Dans ce cas la taille du buffer de la socket risque d etre depassee. Pour cela il suffirait peut etre de faire un sleep de 1 seconde (apres que le main ait relache le mutex) pour laisser au thread le temps d envoyer les donner). Mais j ai peur aussi de faire un sleep trop long ce qui exposera la taille du buffer de la socket.
D ailleurs la taille maximum du buffer d une socket est de combien ?
Ensuite je dois gerer le cas des sockets bloquantes. pour cela j utilise la fonction select(), ce qui me permettra de gerer les time out (je ne vois que ca pour son utilisation, si y en a dautre n hesitez pas a me le dire).
voila comment je compte faire.
Merci de me faire parvenir vos opinions.
Partager