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 et options


Sujet :

Réseau C

  1. #1
    Membre confirmé
    Inscrit en
    Août 2007
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 93
    Par défaut Socket et options
    Bonjour à tous,
    Je voulais savoir s'il était possible de récupérer
    des informations sur une socket (et si oui comment procéder ? ) connectée sous Unix.
    Par exemple, peut-on savoir si la connexion a été interrompue inopinément ?
    Si il y a eu une déconnexion "propre" ?

    Merci !

  2. #2
    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
    Citation Envoyé par swingNJava Voir le message
    Bonjour à tous,
    Je voulais savoir s'il était possible de récupérer
    des informations sur une socket (et si oui comment procéder ? ) connectée sous Unix.
    Par exemple, peut-on savoir si la connexion a été interrompue inopinément ?
    Si il y a eu une déconnexion "propre" ?

    Merci !

    oui

  3. #3
    Membre confirmé
    Inscrit en
    Août 2007
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 93
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    oui
    lol ! ok !
    Mais que faut-il utiliser ? y-a-t-il des flags a vérifer ?
    Par exemple si la connexion à été fermé par l'hôte distant, la fonction recv renvoie tout de même zéro et un buffer vide..... mais comment s'assurer que cela provient réellement de la fermeture de la connexion par la machine distante ?

  4. #4
    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
    c'est plus compliqué..

    • il y a les signaux (SIGTERM, SIGKILL, SIGTERM, SIGHUP)
    • il y a la réponse de recv
    • il y a les "poll" aussi (quand un socket "gèle", il n'y a pas forcément quelque chose à lire, la connexion des 2 côtés est tjs active...)


    Donc il faut fouiller, et blinder son code si on doit faire quelque chose de vraiment propre...

  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 swingNJava Voir le message
    Bonjour à tous,
    Je voulais savoir s'il était possible de récupérer
    des informations sur une socket (et si oui comment procéder ? ) connectée sous Unix.
    Par exemple, peut-on savoir si la connexion a été interrompue inopinément ?
    Si il y a eu une déconnexion "propre" ?
    Oui. Tu testes la valeur retournée par les fonctions bloquantes (recv(), send())
    Si c'est 0, c'est qu'il y a eu deconnexion.

    http://www.opengroup.org/onlinepubs/...ions/recv.html

  6. #6
    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
    Citation Envoyé par Emmanuel Delahaye Voir le message
    Oui. Tu testes la valeur retournée par les fonctions bloquantes (recv(), send())
    Si c'est 0, c'est qu'il y a eu deconnexion.

    http://www.opengroup.org/onlinepubs/...ions/recv.html
    Désolé, Emmanuel, mais ça ne suffit pas pour tous les cas de figure... Socket gelé etc etc...

    La combinaison d'un certain nombre de test est essentielle pour un truc 100% fiable...

    En effet, quand c'est une déconnection, oui, c'est OK. Mais pour tout un tas d'autres trucs (timeout, erreur d'écriture, coredump d'un côté, gel du socket, déclenchement d'une alarme (donc interruption) etc etc) ça ne suffit pas...

Discussions similaires

  1. t_errno option socket
    Par pepito31 dans le forum Réseau
    Réponses: 0
    Dernier message: 21/12/2010, 10h24
  2. [socket] option des keepAlive
    Par ronan99999 dans le forum C#
    Réponses: 3
    Dernier message: 28/03/2008, 14h07
  3. executer une application a distance : Sockets ? RPC ? CORBA?
    Par a_hic dans le forum Développement
    Réponses: 5
    Dernier message: 30/05/2006, 13h02
  4. [socket] Problème avec les options
    Par gangsoleil dans le forum Développement
    Réponses: 3
    Dernier message: 13/07/2005, 13h11
  5. Vous gerez comment les options d'un programme?
    Par n0n0 dans le forum C++Builder
    Réponses: 5
    Dernier message: 17/05/2002, 13h21

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