Serveur multi-clients et select()
Bonjour à tous,
Je souhaite mettre en place un serveur multi-clients et ce de manière asynchrone avec un seul thread donc :)
J'ai bien évidemment entendu parler de la fonction select() et des fd_set qui vont avec et j'ai justement quelques question à propos de cette dernière!
* étant donné que la fonction se 'débloque' dès lors que l'un des flux des fd_sets d'entrés change d'état, est-il possible que les fd_sets modifiés par la fonction select() possèdent plus de 1 élément?
* Si j'ai tout bien compris, A l'interieur d'un while(1):
1- je construit un fd_set contenant les descripteurs de mes sockets clients
2- je fais un appel à select avec le fd_set précédemment construit
3- je récupère les descripteurs des sockets disponibles en lecture puis je gère le reste
Cela implique donc de reconstruire un fd_set (un tableau de long donc) à chaque fois qu'un client envoit des donnés vers le serveur ou se déconnecte.
Cela ne me parait pas très performant et donc je souhaiterais savoir s'il existe un moyen de réutiliser toujours le même fd_set qui reste à priori constant un bon bout de temps ou quelque chose dans ce genre la, ce qui éviterai de le reconstruire à chaque fois ou de le copier depuis un fd_set original?
Je remercie par avance ceux qui jetteront un ptit coup d'oeil à ce topic :)