Bonjour à tous ,
j'ai une question dans le cas où on a un serveur avec plusieurs clients en TCP , combien de sockets sont crées ?
merci
Bonjour à tous ,
j'ai une question dans le cas où on a un serveur avec plusieurs clients en TCP , combien de sockets sont crées ?
merci
Salut logiquement à chaque appel de socket() une socket est crée.
Si tu veux en créer plusieurs bref dans l'optique de gestion serveur, il faut donc créer une structure qui fait l'aggrégation de la socket crée , de tous les paramètres ( adresse IP, Port..) etc...
Et ensuite de la mémoriser dans un tableau ou mieux une liste chainée
Il y a un excellent tuto sur ce DVP
En outre, un socket supplémentaire est généré et renvoyé par accept() chaque fois que l'on prend en charge une connexion entrante, justement pour communiquer avec le client concerné.
Salut,
il y a normalement 1 socket par client.
Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
Un peu de programmation réseau ?
Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.
Oui, mais on ne peut pas graver cela dans le marbre puisqu'en réalité, il y aurait un socket par client mais :
- Un client peut ouvrir plusieurs connexions vers le serveur, et réciproquement ;
- Un client peut avoir refermé sa connexion, et le socket associé exister encore (jusqu'à ce que le serveur le libère avec close()) ;
- Il faut prendre en compte les sockets servant à l'écoute du ou des ports concernés (donc au moins un, sinon en nombre arbitraire) ;
- Dans l'absolu, le serveur peut choisir de refermer puis libérer les sockets écoutant ces ports, donc cesser d'être à l'écoute, tout en conservant les clients déjà connectés ;
- En poussant le vice jusqu'au bout, il faut définir clairement ce que l'on entend par « client ». Le bon sens nous indique qu'il s'agit de toute entité capable de se connecter elle-même au serveur et de l'interroger mais on pourrait tout-à-fait imaginer une architecture dans laquelle plusieurs processus exploitent une même connexion par le biais d'un multiplexeur, par exemple un proxy. En principe, c'est précisément le rôle d'un proxy (« mandataire ») d'être un client unique pour le compte d'autres entités, mais cela a de l'importance si le protocole donne la possibilité de se référer à ce qui se trouve au dessus de la couche de session, par exemple les NBVH des serveurs web.
Une fois ceci posé, on voit que le nombre de sockets mis en œuvre est déterministe dans une situation précise, mais qu'il est difficile d'établir une formule générale.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager