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

Entrée/Sortie Java Discussion :

[Socket] Détection de déconnexion


Sujet :

Entrée/Sortie Java

  1. #1
    Membre habitué Avatar de Wookai
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2004
    Messages
    307
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2004
    Messages : 307
    Points : 180
    Points
    180
    Par défaut [Socket] Détection de déconnexion
    Bonjour !

    Je suis en train de faire un petite application client/serveur, et, à plusieurs reprises, le client comme le serveur font un readLine() sur le BufferedReader ouvert "sur" le socket. Le problème, c'est que si le gars en face se déconnecte alors qu'on est en train de faire un readLine(), on obtient une valeur NULL.

    Le seul moyen de détecter la déconnexion est-il de faire un test sur chaque message reçu via readLine() pour voir s'il est égal à NULL ? N'y a-t-il pas de moyen de tester le BufferedReader ou le Socket directementn pour savoir s'ils sont toujours actif ou si le gars en face est déconnecté ?

    Merci bien !

  2. #2
    Membre habitué

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    120
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2002
    Messages : 120
    Points : 133
    Points
    133
    Par défaut
    Si je me trompe pas en cas de deconnexion du client, tu en es avertit via une exception IOException je pense. A verifier néanmoins

  3. #3
    Membre habitué Avatar de Wookai
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2004
    Messages
    307
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2004
    Messages : 307
    Points : 180
    Points
    180
    Par défaut
    Non, il me semble que l'IOException n'est lancée que lorsqu'on essaie d'écrire et que la connexion est fermée, et non lorsqu'on essaie de lire...

  4. #4
    Membre habitué

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    120
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2002
    Messages : 120
    Points : 133
    Points
    133
    Par défaut
    En tout cas je continue a dire que j'ai une exception qui surgit ... J'avais fait une application de messageire instantannée et je sais que l'exception survenait au niveau du read car le socket était fermé ... DOnc d'après moi tu obtient bien un IOException

  5. #5
    Membre habitué Avatar de Wookai
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2004
    Messages
    307
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2004
    Messages : 307
    Points : 180
    Points
    180
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    try {
      receivedMsg = inStream.readLine();
    }
    catch (IOException ioe) {
      System.out.println("Client: error : " + ioe.toString());
    }
    J'ai essayé ça, et ça n'a rien donné : aucune exception lancée. J'ai même essayé de catcher une Exception, et rien non plus... Tu arriverais à retrouver ton code ? Merci !

  6. #6
    Membre averti Avatar de soad
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    520
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2004
    Messages : 520
    Points : 439
    Points
    439
    Par défaut
    ben tu peux faire comme ca:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
    String receivedMsg;
     
    while(  (receivedMsg = inStream.readLine()) != null  ) {
     
        System.out.println(receivedMsg);
     
    }
     
     
    //si la boucle se termine cela veux dire que la connexion est couper
     
    System.out.println("Connexion coupé");

  7. #7
    Membre habitué Avatar de Wookai
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2004
    Messages
    307
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2004
    Messages : 307
    Points : 180
    Points
    180
    Par défaut
    Ok, en gros c'est ce que j'ai fait : après chaque readLine() je fais un test != null sur ce que j'ai lu et que ferme la connexion si le test échoue...

    Merci bien pour vos réponses !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Double socket , probléme de déconnexion
    Par sivaller dans le forum Développement
    Réponses: 4
    Dernier message: 03/08/2008, 22h20
  2. [socket] détecter une déconnexion
    Par ArgusAzure dans le forum Réseau
    Réponses: 4
    Dernier message: 22/03/2007, 11h30
  3. [socket] Gérer la déconnexion bluetooth
    Par basnifo dans le forum MFC
    Réponses: 2
    Dernier message: 15/03/2006, 17h31
  4. [Socket] Détecter une déconnexion
    Par leyee dans le forum Développement
    Réponses: 2
    Dernier message: 05/12/2005, 12h27
  5. [Socket] Détecter la déconnexion d'un client
    Par leyee dans le forum Entrée/Sortie
    Réponses: 21
    Dernier message: 24/11/2005, 10h33

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