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

Développement Discussion :

connection/deconnection des sockets


Sujet :

Développement

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 10
    Points : 11
    Points
    11
    Par défaut connection/deconnection des sockets
    Salutations,

    Je fait une appli client/serveur, BC++, (serveur winXP/w98, clients w98 exclusivement), connections socket avec TServerSocket et TClientSocket.

    Pour tester la robustesse, au cours de mes tests je me suis apercu que :
    - en quittant l'appli cliente, la perte de la connection est dectectée coté serveur, l'evenement onDisconnect est exectuté.
    - en debranchant le cable réseau de la machine client... rien ne se passe.. ni onError, ni onDisconnect...!!

    Comment detecter cette perte réseau ? visiblement XP y arrive puisqu'il se permet d'afficher "cable débranché" dans la trayicon des la deco du cable.
    (Disons que je cherche une méthode passive, car le genre : envoi donc des paquets de temps en temps pour voir si la socket est active, c'est pas bin coule pour le réseau : qq 10aines de clients simultanés).

    merci
    - yotasse -

  2. #2
    ovh
    ovh est déconnecté
    Rédacteur
    Avatar de ovh
    Homme Profil pro
    Architecte devops web full stack
    Inscrit en
    Mai 2002
    Messages
    3 841
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte devops web full stack

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 841
    Points : 6 514
    Points
    6 514
    Par défaut
    A mon avis c'est parce que quand tu quittes ton applic, même "brutalement", le destructeur de TClientSocket est appelé, et dedans il y a une fonction qui ferme "proprement" la connexion et donc le serveur reçoit un message "je me déconnecte". Par contre quand tu enlèves le câble réseau, aucun message n'est envoyé (forcément ça ne saurait pas puisqu'il n'y a plus de réseau ). La solution pour ça est de faire un petit "ping / pong" comme sur irc entre ton serveur et ton client à intervalle régulier (toutes les minutes, tu peux même laisser l'utilisateur régler la valeur de ce timeout). Dès que tu ne reçois plus de réponse à ton "ping" tu sais qu'il y a un problème. Je mets ici volontairement "ping/pong" entre guillemets, car il ne s'agit pas des commandes ping icmp, mais bien d'une implémentation à faire au niveau de ton procole applicatif, propre à ton logiciel donc.

    Tutoriels sur les UPS, e-commerce, PHP, critiques de livres...

    Pensez à consulter les FAQs et les cours et tutoriels.
    FAQ Linux - Cours et tutoriels Linux - FAQ PHP - Cours et tutoriels PHP
    Ce forum est fait pour vous et surtout par vous, merci d'en respecter les règles.

    Je n'ai rien à voir avec la société www.ovh.com !

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 10
    Points : 11
    Points
    11
    Par défaut
    ok pour l'explication, elle est rationnelle.

    Pour la solution, c'est celle que je proposais et que je ne trouve pas super : ca encombre le réseau pour rien. je suis plutot a la recherche d'une methode comme celle qu'implémente xp : il detecte immediatement la deco !!

    mais merci qd meme.
    - yotasse -

  4. #4
    ovh
    ovh est déconnecté
    Rédacteur
    Avatar de ovh
    Homme Profil pro
    Architecte devops web full stack
    Inscrit en
    Mai 2002
    Messages
    3 841
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte devops web full stack

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 841
    Points : 6 514
    Points
    6 514
    Par défaut
    Oui bien sûr ça envoit des trames "inutiles" sur le réseau, mais en attendant ce "keep-alive" est employé par bien des protocoles... Il y a énormément d'informations de contrôle comme celles-là qui transitent sur les réseaux, et l'information vraiment utile est bien moindre. C'est un mal nécessaire pour les transmissions...

    Pour XP je ne sais pas comment il fait, mais étant donné que c'est un système d'exploitation il est très possible qu'il s'adresse directement au pilote de la carte réseau, qui lui enverrait un signal dès qu'elle n'a plus de câble...

    Tutoriels sur les UPS, e-commerce, PHP, critiques de livres...

    Pensez à consulter les FAQs et les cours et tutoriels.
    FAQ Linux - Cours et tutoriels Linux - FAQ PHP - Cours et tutoriels PHP
    Ce forum est fait pour vous et surtout par vous, merci d'en respecter les règles.

    Je n'ai rien à voir avec la société www.ovh.com !

Discussions similaires

  1. [MFC] Faible utilisation des sockets via les MFC ?
    Par Yellowmat dans le forum MFC
    Réponses: 1
    Dernier message: 25/08/2005, 17h15
  2. Chat basé sur des sockets php5
    Par javhost dans le forum Développement
    Réponses: 1
    Dernier message: 12/07/2005, 16h21
  3. Réponses: 2
    Dernier message: 12/10/2004, 13h04
  4. probleme de gestion de clients avec des sockets....
    Par ludvo dans le forum Réseau
    Réponses: 6
    Dernier message: 25/09/2003, 12h37
  5. utilisation des sockets sous windows
    Par Tupac dans le forum Réseau
    Réponses: 2
    Dernier message: 21/12/2002, 18h24

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