IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

C# Discussion :

[C# vs2005] TCPClient et Déconnexion


Sujet :

C#

  1. #1
    Membre régulier
    Profil pro
    Ingénieur de développement
    Inscrit en
    Avril 2005
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur de développement

    Informations forums :
    Inscription : Avril 2005
    Messages : 169
    Points : 96
    Points
    96
    Par défaut [C# vs2005] TCPClient et Déconnexion
    Bonjour.

    Je crée 2 applications reliées par réseau TCP (1 serveur, et 1 client)
    - le serveur utilise une classe "TcpListener"
    - le client utilise une classe "TcpClient"


    Mon soucis est le suivant :
    Dans l'application client, comment savoir si le serveur est tombé ?
    C'est à dire :
    - Je lance le serveur
    - Je lance le client
    - Je stoppe le serveur
    >> A ce stade, comment savoir dans le client que le serveur est stoppé ?

    Autrefois, en vb6, avec le control TCP, la variable "State" permettait de résoudre ce problème. Je ne trouve pas d'équivalent en C#

  2. #2
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Tu as regardé dans les Propriétés de la classe TcpClient ?
    http://msdn2.microsoft.com/en-us/lib...t_members.aspx

    Sinon tu peux essayer d'envoyer quelque chose et de voir si ça abouti ou pas.

  3. #3
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 277
    Points : 1 521
    Points
    1 521
    Par défaut
    Je confirme ce que Skyrunner a dit, il faut faire un Send (de 0 octets ?). Une exception est levée si le serveur ne répond pas.

  4. #4
    Membre régulier
    Profil pro
    Ingénieur de développement
    Inscrit en
    Avril 2005
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur de développement

    Informations forums :
    Inscription : Avril 2005
    Messages : 169
    Points : 96
    Points
    96
    Par défaut
    J'arrive à un résultat satisfaisant avec la méthode "Socket.Poll" dans un thread qui tourne en permanence dès qu'1 connexion a été établie.


    //-- Si La connexion a été clôturée par le serveur ou bien un problème réseau est apparu
    if( (null != m_TcpClient) && (m_TcpClient.Client.Poll(10, SelectMode.SelectRead)) )
    {
    //-- Message
    MessageBox.Show("La connexion au serveur est interrompue !", "Liaison TCP", MessageBoxButtons.OK, MessageBoxIcon.Hand);
    }

    Maintenant, je ne sais pas qu'elle est finalement la qualité de ce test : il fonctionne mais est ce que je ne sature pas la machine en faisant du polling ?

    Est-il plus sécuritaire de tenter un "send" à 0 octet comme l'indique Kaidan ?

  5. #5
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Pour info, la réception d'un message de 0 octets indique une déconnexion

  6. #6
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 277
    Points : 1 521
    Points
    1 521
    Par défaut
    D'après la doc,

    Cette méthode ne peut pas détecter certains types de problèmes de connexion, tels qu'un câble réseau rompu, ou que l'hôte distant a été arrêté de manière anormale. Vous devez essayer d'envoyer ou de recevoir des données pour détecter ces types d'erreurs.
    Donc c'est loin d'être exceptionnel pour déterminer les connexions interrompues.

  7. #7
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Citation Envoyé par Graffito Voir le message
    Pour info, la réception d'un message de 0 octets indique une déconnexion
    C'est le même principe qu'en C.

Discussions similaires

  1. Problème de timeout et de déconnexion cliente
    Par Aurelien92 dans le forum CORBA
    Réponses: 18
    Dernier message: 24/08/2004, 14h32
  2. Déconnexion réseau
    Par esa dans le forum Web & réseau
    Réponses: 3
    Dernier message: 22/06/2004, 07h55
  3. [Débutant] Problème de déconnexion d'une page JSP
    Par amal9 dans le forum Servlets/JSP
    Réponses: 12
    Dernier message: 22/01/2004, 13h40
  4. Déconnexion d'une session Win2k
    Par lamasse dans le forum C++Builder
    Réponses: 3
    Dernier message: 02/10/2003, 08h39
  5. [Indy TCPClient] Recupérer le données reçues
    Par fandor7 dans le forum Web & réseau
    Réponses: 8
    Dernier message: 29/06/2003, 21h52

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