J'ai créé une application de serveur client avec C++ CSocket. Lorsque je connecte le client au serveur et après que je ferme le client avec le bouton X normal ou que je le termine avec taskmanager, le serveur CSocket reçoit l'événement OnClose. Le problème est que lorsque je désactive la connexion Internet sur les fenêtres sur lesquelles le client s'exécute, le serveur CSocket ne reçoit pas l'événement OnClose ni OnReceive!CSocket ne reçoit pas OnClose ou OnReceive lorsque vous désactivez la connexion réseau côté client
Quelqu'un peut-il savoir ce qui se passe? Mise à jour: Je viens de tester et vu que le client n'a pas reçu le OnClose aussi! J'ai désactivé la connexion Internet sur les fenêtres sur lesquelles le client s'exécute!
Merci, dois-je garder en vie sur le serveur et le client que vous pensez? – EBAG
Dépend de ce que vous essayez de protéger contre. Si vous activez le keepalive côté serveur, cela empêchera une connexion de rester en veille au cas où le client serait arrêté comme décrit ci-dessus. Encore une fois, cela n'est nécessaire que dans le cas où le serveur n'écrit jamais sur le socket. Le keepalive du côté client a probablement moins de sens puisque probablement votre client écrit sur le socket et si une connexion client consomme des ressources, ce n'est généralement pas un gros problème. –