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] Tester une fermeture soudaine d'un client


Sujet :

Entrée/Sortie Java

  1. #1
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    133
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 133
    Points : 149
    Points
    149
    Par défaut [Socket] Tester une fermeture soudaine d'un client
    Bonjour,

    J'inaugure mon compte par ce petit problème surement anodin, mais comme je suis assez jeune dans le réseau en Java, je ne vois pas trop la méthode la plus adaptée à utiliser. Donc j'en appelle à vos grands savoirs (:

    Voila, j'ai donc mis en place un client et un serveur, qui communiquent à merveille. Lors de l'utilisation du serveur, celui-çi attend à un moment un objet à désérialiser.
    Lorsque le client est toujours connecté, la seria / deserialisation se fait sans problème.
    Seulement, quand je coupe soudainement et brutalement le client, cela entraine une levée d'exception (EOFException) au niveau du serveur.

    Voila le problème s'il en est un, j'ai trouvé là methode "isConnected" qui me permettrait apparement de tester avant l'attente de deserialisation si le socket est toujours connecté ou non, seulement le serveur me répond tjrs que oui. Donc peut-etre que je fais fausse route sur cette méthode.

    Donc voila, auriez-vous une méthode qui me permettrait de détecter si le socket est toujours viable, ou alors je dois passer par un catch lors d'un envoi de test sur le socket (ce qui me parait un peu brutal).

    Je vous remercie de l'aide éventuel, ca m'intrigue un peu tout ça (:

    Bonne soirée !

  2. #2
    Membre chevronné
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Points : 1 958
    Points
    1 958
    Par défaut
    La méthode la plus efficace est de catcher l'IOException lors du read :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    try{
       while(...){
          monSock.read(...);
       }
    }catch(IOException ioe){
       System.out.println("Connexion rompue.");
    }

  3. #3
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    133
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 133
    Points : 149
    Points
    149
    Par défaut
    Oki je te remercie, finalement j'étais parti sur le même type de test, ça me paraissait un peu bourrin malgré tout, mais si c'est le plus efficace !

    'journée

  4. #4
    Membre chevronné
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Points : 1 787
    Points
    1 787
    Par défaut
    Effectivement, c'est la méthode normale pour gérer la déconnexion.
    Attention dans l'idée à ne pas confondre Exception et erreur ... Gérer une Exception dans le catch peut être un cas totalement "standard" !

    N'oublie pas le tag

  5. #5
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    321
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 321
    Points : 360
    Points
    360
    Par défaut
    Avec l'habitude, une exception n'est plus du tout synonyme d'erreur. Les exceptins permettent dans de nombreux cas de gérer une situation de façon élégante

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

Discussions similaires

  1. Faire tester une application à un client
    Par Finality dans le forum WinRT
    Réponses: 1
    Dernier message: 24/01/2013, 01h05
  2. tester une periode de date
    Par jpg dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 03/12/2004, 15h37
  3. [Thread][socket]Problème de fermeture d'un thread
    Par meda dans le forum Concurrence et multi-thread
    Réponses: 4
    Dernier message: 04/11/2004, 01h03
  4. [Avancé] Recopie une session dans un autre client
    Par gregoun dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 29/06/2004, 12h11
  5. [Débutant] Tester une connection sur bdd
    Par lando dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 03/09/2003, 14h37

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