Bonjour,
Je suis en train de construire une application server et, lors du OnAccept de mon socket serveur, un nouveau socket client est à chaque fois créé:
Ensuite, je reçois correctement des messages de mes clients connectés (onReceive) que je traite en les affichant à l'écran. Et lorsqu'un socket client se ferme, le Onclose du client est bien appelé.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 Void SocketServeur::OnAccept(int nErrorCode) { CSocket::OnAccept(nErrorCode) CClientSocket * pSocket = new CClientSocket(this); if (Accept(*pSocket) { pSocket->Init(); m_connectionList.AddTail(pSocket); //de type CPtrList } else delete pSocket; }
Enfin, lorsque je ferme mon application, je fais un delete des Sockets clients contenu dans m_connectionList.
Ma question est la suivante: Si je stocke mes sockets clients dans une liste (m_connectionList) pour une raison évidente de mémoire (celle-ci doit être gérée en cas de déconnection des objets clients ou lors de la fermeture de l'application) le socket serveur s'occupe-t-il seul de la gestion de tous les sockets clients qui se sont connectés à lui (réception des messages, fermeture des connections ...) ? En d'autres termes, dois-je prévoir des routines (sous forme de thread, par exemple) qui, pour chaque client, écouteront si des messages arrivent ou si des connections se défont? Apparemment, le socket serveur fait ça très bien tout seul (puisque OnClose et OnReceive sont bien appelés), mais j'aimerais une confirmation. Et si quelqu'un pouvait me dire où ces sockets sont stockés/gérés dans l'objet serveur, je serais comblé.
Merci à tous,
Hugues.
Partager