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 :

Socket Perte de réseau


Sujet :

Réseau C

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 34
    Par défaut Socket Perte de réseau
    Bonjour,

    Je suis actuellement entrain de réaliser un serveur et un client via les socket. Actuellement je travaille sur la gestion de perte de connexion suite:
    - au plantage du serveur
    - et a la perte du réseau

    Pour la deconnection du serveur pas de problème mon recv renvoie une erreur que j'ai gerer. Concernant la perte du réseaux sa ne se passe pas aussi bien. En effet le client reste bloquer sur le recv infiniment sans jamais remarqué que le réseau étais HS... Donc si quelqu'un sais comment faire je suis plus que preneur

    merci d'avance,

  2. #2
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Est ce que dans ton protocole, tu peux envisager l'envoi d'un paquet protocolaire heartbeat_request périodiquement (toute les minutes) pour tester la ligne. Le rôle de l'autre extrémité est d'envoyer un paquet heartbeat_response à la réception d'un paquet heartbeat_request.
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  3. #3
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Razor620 Voir le message
    Concernant la perte du réseaux sa ne se passe pas aussi bien. En effet le client reste bloquer sur le recv infiniment sans jamais remarqué que le réseau étais HS...
    C'est normal. Une rupture du réseau n'est pas une erreur de protocole IP ni TCP. C'est à l'application de gérer des timeout sur ses demandes de réponses, ou de gérer un watchdog (ou heartbeat) avec timeout, comme déjà suggéré.

    L'info de rupture de réseau peut être remontée par le système mais par par les sockets qui ne savent pas avec quel réseau physique ils travaillent

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 34
    Par défaut
    OkOk merci. Le select ferait l'affaire pour tester ma connection ?? et si oui comment on l'utilise la MSDN n'est pas très clair en se qui concerne les socket

  5. #5
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Razor620 Voir le message
    OkOk merci. Le select ferait l'affaire pour tester ma connection ?? et si oui comment on l'utilise la MSDN n'est pas très clair en se qui concerne les socket
    http://emmanuel-delahaye.developpez....aux.htm#select

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 34
    Par défaut
    Problème: Le select ne détecte pas la perte de réseau, c'est normal ?

    voici mon code au cas ou j'aurai fait une gaffe:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    fd_set SocketSet;
    FD_ZERO (&SocketSet);      // clears SocketSet
    FD_SET (m_Socket, &SocketSet); // adds a stream
    int nError;
     
    nError = select (m_Socket + 1, &SocketSet, NULL, NULL, NULL);
    if(nError == -1)
    	return 0; //connection Lost
     
    if(0 >= recv(m_Socket, (char*) &dwThreadID, sizeof(DWORD), 0))
    	return 0; // If Connection Lost

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    613
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 613
    Par défaut
    Non

    Si tu veux que ta socket soit fermé toute seule, il faut regler ça au niveau système.
    Sinon tu dois le gerer toi meme avec des timeout

  8. #8
    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
    déjà dit plusieurs fois...

    Un seul moyen sûr, c'est de vérifier quand on peut (sous unixoides facile grâce à la fonction poll, qui à ma connaissance n'est pas vraiment portée sous Windows) la validité, et de trapper tous les sgnaux importants

    SIGKILL, SIGINT, SIGTERM, SIGHUP, SIGIO, etc..

    Une recherche sur ce sous-forum devrait t'amener à un bout de code ndiquant un test sûr. Après il faut aussi comme cité par d'autres un timer en plus pour faire un poll régulier, même quand il n'y a pas de requêtes en cours..

Discussions similaires

  1. Problème sockets perte de connexion
    Par jabadao dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 07/11/2007, 15h31
  2. Problème socket, localhost et réseau
    Par dje41 dans le forum Développement
    Réponses: 1
    Dernier message: 22/06/2007, 17h57
  3. [DEBIAN ETCH 4.0] Perte du réseau pourtant config OK
    Par speedev dans le forum Réseau
    Réponses: 2
    Dernier message: 18/05/2007, 18h55
  4. Sockets, Internet et Réseau
    Par Harvester dans le forum Développement
    Réponses: 13
    Dernier message: 06/04/2005, 14h22
  5. [UDP][Socket] perte de paquets et arret d'ecoute sur port
    Par Guismo1979 dans le forum Développement
    Réponses: 6
    Dernier message: 02/01/2003, 12h13

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