Appariement sockets

J’ai un programme serveur (fonctionne sur les trois systèmes principaux de l’OS), créé en c ++ qui s’efforce de connecter deux étrangers pour la communication. Mon modèle actuel semble déprécié et je me demande simplement s’il existe un meilleur moyen de servir les clients.

-server reçoit la demande de connexion
-checks pour l’interdiction
-starts thread pour cette socket


[le fil passe simplement à travers ces étapes]

-confirmez la connexion avec le partenaire (gestionnaire de chèques)
-si partenaire de requête non connecté de la classe de gestionnaire
-receive on my socket <- le client envoie des paquets en vie tous les 2 s environ
-on déconnecter, informez le gestionnaire et fermez le fil.


[la classe de gestionnaire fonctionne comme ça]

-add socket: push_back sur mon vecteur de sockPairs
– partenaire de demande: trouver sockPair non connecté, s’il n’en existe pas, créer un nouveau sockPair, une fois connecté, marquer sockPair pour le supprimer, le supprimer s’il est déjà marqué.
-remove socket: ajoute un indicateur à l’ID du responsable du partenaire que j’ai déconnecté
-check socket: contrôle de l’ID du gestionnaire pour la déconnexion


Je pense qu’une carte serait beaucoup plus efficace, mais je ne suis pas positif, car je n’ai jamais travaillé avec elles. Que pensez-vous que je devrais changer? J’espère pouvoir servir 200 clients avec ce modèle, je ne suis vraiment pas sûr que le modèle actuel puisse le gérer …

Un fil par connexion n’est tout simplement pas à l’ échelle. Vous devez utiliser un mécanisme tel que select (), poll (), epoll (), WSAAsyncSelect () ou tout autre élément permettant d’interroger un ensemble de sockets pour des événements. Ensuite, vous traitez chaque socket dans l’ordre, puis recommencez.