Je dois écrire un serveur qui accepte les connexions de plusieurs machines clientes, assure le suivi des clients connectés et envoie les données des clients individuels selon les besoins. Parfois, tous les clients peuvent être contactés en même temps avec le même message, d'autres fois, il peut s'agir d'un client individuel ou d'un groupe de clients.Connexions à plusieurs sockets
Comme j'ai besoin de confirmation que les clients ont reçu l'information et ne veulent pas construire une structure ACK pour une connexion UDP, j'ai décidé d'utiliser une méthode de diffusion TCP. Cependant, j'ai eu du mal à comprendre comment maintenir plusieurs connexions et les garder inactif.
Je semble avoir trois options. Utilisez une fourchette pour chaque connexion entrante pour créer un processus enfant séparé, utilisez pthread_create pour créer un nouveau thread complet pour chaque processus ou utilisez select() pour attendre tous les ID de socket ouverts pour une connexion.
Recommandations sur comment attaquer ceci? J'ai commencé à travailler avec pthreads mais comme les performances ne poseront probablement pas de problème, le traitement multicœur n'est pas nécessaire et il existe peut-être un moyen plus simple.
Comme une note, je travaille en C/C++ – BSchlinker
Je devrais également mentionner, le nombre de connexions à ce système sont statiques. Ce n'est pas une machine publique (les connexions ne changeront pas au fil du temps - c'est-à-dire que je ne vois pas de problème de performance). – BSchlinker
Personnellement, je voudrais multiplexer using select(), ou de préférence kqueue() si fonctionnant sur mac ou bsd. L'une ou l'autre des trois options fonctionnerait, cependant, et les options pthread/fork sont très faciles à implémenter si votre serveur doit avoir un faible nombre de clients et un faible conflit de client actif. –