Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Nouveau membre du Club
    Inscrit en
    juillet 2005
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : juillet 2005
    Messages : 92
    Points : 39
    Points
    39

    Par défaut [Socket]Probleme avec CLOSE_WAIT

    Salut tout le monde.

    Voila je suis en train de faire un petit serveur TCP en C#.

    Tout marche tres bien ormis le fait que lorsque je ferme mes connnections elles se mettent en CLOSE_WAIT au lieu de se fermer.

    Est ce normal ? Y a t il un moyen d'empecher ca ?

    Merci d'avance

  2. #2
    Membre expérimenté
    Avatar de Aramis
    Profil pro
    Inscrit en
    juin 2002
    Messages
    1 493
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Belgique

    Informations forums :
    Inscription : juin 2002
    Messages : 1 493
    Points : 1 636
    Points
    1 636

    Par défaut

    Bonsoir,

    premierement, la signification de CLOSE_WAIT depend du point de vue, c'est a dire si c'est le status atteint par le client ou bien le server, vous n'avez pas precise.
    Est ce normal? je ne sais pas seule la MSDN pourra vous repondre. Par contre, j'ai remarque que lorsque je suis connecte a DVP.com par exemple, mes sockets passent toutes en CLOSE_WAIT une fois que j'ai recu ma page. Par consequent, je suis d'avis que c'est un status permettant la fermetture complete. propre et definitive de la communication ou bien de continuer des transactions. A verifier donc.

    A.
    Avant de Poster Lire les Regles! Merci
    -------------------------------------------------
    "The only Way for Evils to Triumph is for Good Men to Do Nothing"
    Edmund Burke (1729 - 1797)

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    décembre 2006
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : décembre 2006
    Messages : 68
    Points : 45
    Points
    45

    Par défaut

    Citation Envoyé par Raton
    Salut tout le monde.

    Voila je suis en train de faire un petit serveur TCP en C#.

    Tout marche tres bien ormis le fait que lorsque je ferme mes connnections elles se mettent en CLOSE_WAIT au lieu de se fermer.

    Est ce normal ? Y a t il un moyen d'empecher ca ?

    Merci d'avance

    salut

    j'ai exactement le même problème.. j'ai fait un utilitaire client/serveur (VBS2005)
    le client dispose de plusieurs modes d'affichage avec possibilité de se connecter au serveur.

    le souci c'est que quand je ferme un mode client (donc fermeture de connexion etc..) et que j'en ouvre un autre pour me reconnecter je vois la précédente connexion en CLOSE_WAIT (avec tcpview).

    Pour contourner j'ai autorisé plus de listen que nécessaire, mais ce n'est pas propre du tout... d'ailleurs après 1 ou même 2h les précédentes connexions sont toujours en CLOSE_WAIT o_O

    bref la seule façon de faire disparaitre tout ça et de couper le serveur.

    Est-ce que quelqu'un sait comment "tuer" ce close_wait coté "serveur" quand un "client" déco brutalement ?

    merci,

    ++

  4. #4
    Membre expérimenté
    Avatar de Juju_41
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    février 2003
    Messages
    974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : février 2003
    Messages : 974
    Points : 1 557
    Points
    1 557

    Par défaut

    D'après le diagramme d'état de TCP :

    Connection à l'état OPEN : si réception d'un segment avec drapeau FIN alors acquitter le segment et passage à l'état CLOSE_WAIT (note : c'est la seule manière d'arriver à cet état de TCP apparemment).

    Connection à l'état CLOSE_WAIT : fermeture de la connection et envoi d'un segment avec drapeau FIN puis passage à l'état LAST_ACK.

    Connection à l'état LAST_ACK : attente de l'acquittement puis passage à l'état CLOSED.

    Donc si la connexion TCP se fait entre les machines A et B et que le problème de CLOSE_WAIT intervient sur la machine A, il faut faire en sorte que ce ne soit plus B qui soit à l'origine de la fermeture de connection mais A.

    Comme ça le problème n'apparait plus sur A ... mais il devrait apparaitre sur B

    Bon courage
    Avant de poster, merci de consulter les règles du forum

  5. #5
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    avril 2012
    Messages
    260
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2012
    Messages : 260
    Points : 120
    Points
    120

    Par défaut

    Bonjour,

    Auriez-vous trouvé une solution après cette énorme laps de temps ? J'ai le même problème via une application JAVA.

Discussions similaires

  1. [socket]probleme avec recv()
    Par mayu5 dans le forum Réseau
    Réponses: 1
    Dernier message: 12/04/2008, 02h43
  2. [socket]probleme avec le tuto
    Par albatr0ss dans le forum Réseau
    Réponses: 5
    Dernier message: 24/12/2006, 11h46
  3. Probleme avec les composant socket de builder
    Par lol733 dans le forum C++Builder
    Réponses: 4
    Dernier message: 07/10/2006, 12h22
  4. [socket] Probleme avec connect
    Par sorry60 dans le forum Réseau
    Réponses: 12
    Dernier message: 16/11/2005, 22h01
  5. Probleme avec des socket !
    Par Ptimath44 dans le forum Réseau
    Réponses: 11
    Dernier message: 31/10/2005, 18h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo