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

Dotnet Discussion :

Evenement sur les Sockets .NET


Sujet :

Dotnet

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2008
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2008
    Messages : 77
    Par défaut Evenement sur les Sockets .NET
    Bonjour,

    J'aimerai pouvoir détecter, avec un systeme d'évenement dans l'idéal, lorsque un client (Socket ou TcpClient) se déconnecte volontairement ou involontairement de la socket serveur.

    Je n'ai réussi à trouver aucun évenement avec les sockets ... Pourtant, il me semble que détecter la connexion/déconexion d'un client est une fonctionalité qui doit etre souvent utilisée par les développeurs .

    Merci pour votre aide

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

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Y'a pas d'évènement mais tu peux vérifier si tu es déconnecté avec la propriété Available (lance une exception si deco), ou la méthode Poll avec SelectRead comme mode. Il retourne true si tu as quelque chose à lire ou si tu es déconnecté.

    Ensuite tu essayes de lire si tu reçois 0 octets c'est que tu es deco sinon c'est que y'avait quelque chose à lire.

  3. #3
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2008
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2008
    Messages : 77
    Par défaut
    Merci Skyounet.

    Autrement dit, il va falloir que je me gère un thread qui tourne en boucle , et qui écoute les déconnexions éventuels des clients?

    Je trouve quand meme bizarre que ca ne soit pas supporté nativement car c'est quand meme un pattern connu (gestion des clients par un serveur).

    Le fait d'avoir un serveur qui entretient la liste des clients connectés, et qui enlève ceux qui sont déconnectés. ou qui se déconnectent intempestivement de cette liste, me semble etre une manipulation souvent faite ...

  4. #4
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    Je me trompe peut être, mais il me semble qu'en cas de déconnexion (voulue ou non), la méthode Receive (et son équivalent asynchrone) renvoie une longueur de données reçues à 0. A vérifier néanmoins.

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

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Citation Envoyé par StormimOn Voir le message
    Je me trompe peut être, mais il me semble qu'en cas de déconnexion (voulue ou non), la méthode Receive (et son équivalent asynchrone) renvoie une longueur de données reçues à 0. A vérifier néanmoins.
    C'était comme ça en C, alors ça doit pas être différent je pense.

  6. #6
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2008
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2008
    Messages : 77
    Par défaut
    Et bien après plusieurs recherches, il semble que le seul moyen, c'est de lire en boucle dans le flux et tester quand il retourne 0 byte de données.

    Si c'est le cas, et si la socket (ou le TcpClient) possède un timeout à l'infini, en lecture, cela veut dire que l'hote distant est fermé ou tombé.

    Par contre, il faut faire gaffe que si la socket possède un timeout en lecture, lorsque ce timeout est dépassé, la méthode de lecture dans le flux, retourne 0 byte de donnée sans pour autant que la socket distante soit fermée.

    C'est un peu mal foutu je trouve quand meme !

Discussions similaires

  1. [WinSock] Question sur les sockets (accept)
    Par Grey dans le forum MFC
    Réponses: 3
    Dernier message: 09/01/2006, 11h37
  2. Cours sur les sockets
    Par sorry60 dans le forum Réseau
    Réponses: 8
    Dernier message: 05/11/2005, 14h19
  3. [10g R2 Windows] Documentation sur les extensions .NET
    Par Laurent Dardenne dans le forum Oracle
    Réponses: 5
    Dernier message: 22/08/2005, 20h27
  4. Evenement sur les barres de défilement d'une ScrollBox
    Par Nico118 dans le forum C++Builder
    Réponses: 2
    Dernier message: 06/05/2004, 14h56
  5. Questionsssss sur les sockets?
    Par Nino dans le forum Développement
    Réponses: 5
    Dernier message: 01/04/2003, 21h11

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