Bonjour à tous!
Je suis en train de développer une application client/serveur TCP/IP sous windows, et je rencontre des problèmes lors de la fermeture des connexions.
Le serveur se connecte vers un serveur distant, échange des données, puis ferme la connexion de la manière suivante:
- send sur le socket pour envoyer un paquet de fermeture
- shutdown (socket, SD_SEND)
- lecture des données éventuelles jusqu'à ce que recv retourne 0
- appel de la fonction closesocket.
J'utilise netstat pour voir les connexions en cours, mais il semblerait que la connexion ne soit pas fermée. Il y a en effet un TIME_WAIT pour la connexion qui aurait du être fermée. Il est à noter que cette ligne disparait au bout de 2 minutes environ.
D'après la doc msdn, on ferme correctement une connexion en appelant successivement shutdown puis closesocket pour libérer les ressources associées au socket.
Quelqu'un pourrait-il me faire part de son expérience?
Quelle est la démarche que vous utilisez dans vos programmes?
Partager