FORUM Syndrome-OC - Jacky-PC


  Programmation


  Langage haut niveau(C, Pascal...)


  [C++] Sockets BSD: Fermeture d'un socket

 




Tuning PC : gaugo Le salon de discussion : Aragorn Le Rouge, Endeavour, nicodache, 2 utilisateurs anonymes et 21 utilisateurs inconnus

 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C++] Sockets BSD: Fermeture d'un socket

n°4793
Deather2
OpenBSD: the way to go!
Posté le 10-01-2005 à 20:40:17  profilanswer
 

Hello!
Voilà j'ai un petit soucis.
Je développe deux classes servant à rendre plus agréable et simple la programmation des sockets BSD (CSocketClient et CSocketServer).
Pour les tester, j'ai développé un petit programme de chat en mode texte, qui marche très bien. Le seul problème, c'est que j'ai l'impression que la connexion est mal fermée, car quand je quitte le programme (il utilise le port 6666) et que je fais un netstat | grep 6666, j'ai encore la connexion en TIME_WAIT.
 
Dans ma classe client, je fais un shutdown(socket, SHUT_RDWR); suivi d'un close(socket);
Dans la classe serveur, j'ai une liste openedConnections[n] qui contient la valeur retournée par les fonctions accept() lancées, et openedSockets qui contient le nombre de connexions ouvertes.
Pour fermer les connexions côté serveur, je fais:

Code :
  1. for(unsigned short  i=0; i<=openedConnections; i++) {
  2.  shutdown(openedSockets[i],SHUT_RDWR);
  3.  close(openedSockets[i]);
  4. }


 
Puis je ferme le socket principal (shutdown()), ouvert avec socket(), et je le close() ensuite.
 
Savez vous ce qui cloche?
À moins que j'ai posté tout ça pour rien et qu'on me dise que c'est normal le TIME_WAIT ? :whistle: (j'en doute ;))
 
Merci :)
Bye
 
 
Note: le programme est développé sous NetBSD 2.0, je peux pas tester sous Linux car j'ai un problème avec les threads, mais je verrais ça plus tard.


Message édité par Deather2 le 10-01-2005 à 20:41:37
mood
Google
Posté le 10-01-2005 à 20:40:17  profilanswer
 

n°4797
Dr Lous
I see old password
Posté le 11-01-2005 à 05:46:14  profilanswer
 

TIME_WAIT  
La socket attend le traitement de tous les paquets encore sur le réseau avant d'entreprendre la fermeture.  
 
:)
 
 
www.linux-kheops.com/doc/man/manfr [...] tat.8.html


Message édité par Dr Lous le 11-01-2005 à 05:47:23

---------------
Oseras-tu m'affronter ?
n°4798
Deather2
OpenBSD: the way to go!
Posté le 11-01-2005 à 07:57:24  profilanswer
 

Mwé ça m'étonne un peu quand même, j'vois pas trop ce qu'il resterai à tester, surtout que ça reste au moins 1 minute :/

n°4800
nicodache
marmotte en chocolat concept ©
Posté le 11-01-2005 à 11:52:43  profilanswer
 

t'as un windoze dans ton réseau ?


---------------
modérateur inside [:nicodache] plankaivoo [:nicodache] - ici powered - Je roule en micra 1l 55cv et je t'emmerde :o
n°4802
Deather2
OpenBSD: the way to go!
Posté le 11-01-2005 à 17:03:46  profilanswer
 

Nop aucun

mood
Google
Posté le 11-01-2005 à 17:03:46  profilanswer
 


Aller à :
Ajouter une réponse

  FORUM Syndrome-OC - Jacky-PC


  Programmation


  Langage haut niveau(C, Pascal...)


  [C++] Sockets BSD: Fermeture d'un socket

 

Hit Parade