-
gestion de connexion
Bonsoir,
Dans une application ,en c via les socket, ou le serveur doit attendre les participants du jeu:
Comment le serveur gère l'attente ?
- s'endore durant l'inscription ?!
- attend un nombre de joueurs inscris?!
- ... d'autre solution ?!
si on prend la première solution, est ce que :
- On va utiliser la méthode "sleep", (comportement parfois indéterminé)?!
- On peut utliser le dernier parametre, timeout, de la fonction select.
- ... d'autre solution?!
Merci pour votre point de vue
E.Bazoga
-
Ton serveur lit un socket exactement de la même façon qu'il lit un flux ou un fichier. Ça veut dire que s'il n'y a rien à lire, le descripteur va être « bloquant », c'est-à-dire que c'est le système lui-même qui va mettre ton processus en sommeil le temps que quelque chose arrive.
L'ennui, c'est que si quelque chose arrive sur un autre socket dans l'intervalle, tu ne pourras pas le savoir avant que celui que tu essaies de lire soit débloqué. Pour cela, il te faut un appel système dédié qui te permette d'en surveiller plusieurs à la fois. C'est le rôle de select().
La valeur timeout te permet enfin de te débloquer dans tous les cas au bout d'un temps donné pour éviter de rester bloqué complètement si aucun de tes clients ne t'envoie de données. Tu peux te servir de cela pour refermer les connexions inactives depuis trop longtemps, par exemple.