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

Réseau C Discussion :

être informé de l'impossiblité de contacter le serveur


Sujet :

Réseau C

  1. #1
    Invité
    Invité(e)
    Par défaut être informé de l'impossiblité de contacter le serveur
    Bonjour à tous.
    Je développe un client de messagerie pour mon école, en utilisant un protocole propre à l'école.
    Ce client se connecte en TCP, permet la discussion, toussa, pas de soucis, rien que du trèsa basique.
    Le problème est que ce serveur tombe assez régulièrement, sans en notifier les clients en bout de chaine ; peut-être crash-t-il, peut-être n'il y a-t-il plus de route pour le joindre, toujours est-il qu'il n'est plus possible de le joindre.
    Et le problème est qu'il se passe un très gros bout de temps avant que les write/send se mettent à renvoyer -1.

    J'ai essayé différentes bidouilles pour être notifié :
    • setsockopt(SO_KEEPALIVE,...)
    • poll avec POLLER | POLLHUP
    • select avec le fd dans except_fds
    rien ne m'a notifié de l'invalidité de la connexion.
    Je veux que lorsque le serveur tombe ou que je débranche mon câble, ou au moins que le serveur tombe, je sache que la connexion n'est plus valide ; je suis avec un amis sur ce proj', lui a résolu ce problème en mettant en envoyant un ping toutes les 5 secondes au serveur. J'espère qu'une autre solution est possible.

    Merci d'avance.

  2. #2
    Membre confirmé
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2004
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2004
    Messages : 58
    Par défaut
    En fait, le seul moyen de savoir si un serveur est tombé, c'est le timeout de la connection au niveau du client.

    Si tu trouves que le timeout est trop long, tu peux le diminuer en utilisant les macros FD_SET.
    Je te renvoie directement au problème cité ici:
    http://www.developpez.net/forums/d83...loque-connect/
    tu n'as pas le choix, tu dois passer par des socket non bloquants.

    Dans le sujet, le timeout est testé sur un connect(), ça marche pareil sur un send()

  3. #3
    Invité
    Invité(e)
    Par défaut
    Hmmm l'idée est pas bête du tout mais il ne semble que la socket ne bloque pas.
    Je me renseigne.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Je recadre le sujet du problème : des fois le serveur crash, et pas moyen d'en être informé.

  5. #5
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    cherche ici, on a déjà posté plein de réponses...


    Juste en page 2 :

    Tester existence hôte

Discussions similaires

  1. Utilisateur quitte une page et en être informé
    Par delavega dans le forum ASP
    Réponses: 4
    Dernier message: 10/03/2011, 16h35
  2. Comment être informé qu'un process est terminé ?
    Par dus dans le forum Visual C++
    Réponses: 4
    Dernier message: 22/10/2009, 10h57
  3. [Tomcat5] Impossiblité de lancer le serveur
    Par thegritch dans le forum Tomcat et TomEE
    Réponses: 1
    Dernier message: 11/10/2007, 09h54
  4. [whois] être informé quand quelqu'un fait un whois sur moi ?
    Par PadawaDesEtoiles dans le forum IRC / mIRC
    Réponses: 4
    Dernier message: 22/03/2007, 19h58
  5. Impossible de contacter mon serveur FTP via ie
    Par Polskynet dans le forum Internet
    Réponses: 3
    Dernier message: 05/12/2005, 14h57

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