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 :

Connexion TCP: comment vérifier la connectivité?


Sujet :

Entrée/Sortie Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    J-F
    J-F est déconnecté
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 10
    Par défaut Connexion TCP: comment vérifier la connectivité?
    Bonjour,

    Je suis en train de faire une petite application réseau utilisant uniquement des connexions TCP. J'ai donc deux flux (un in et out) via le socket qui me permette de dialoguer avec une machine distante. Toutefois, je m'étonne qu'on puisse écrire sur ces flux, sans que cette écriture puisse génerer une exception. Pour écrire quelque chose à un ordi distant par exemple, j'utilise un PrintWriter. Or, il se peut très bien que (et j'en ai fais le test) après une connexion réussie au serveur, le serveur coupe la connexion (de manière tout à fait propre, je ferme les sockets explicitement donc en théorie, le client est bel et bien prévenu de la fermeture), le client ne se rende compte strictement de rien. Ecrire sur le flux de sortie du socket ne pose aucun problème alors que celui ci n'est plus raccordé à rien! Je pensais que Java utiliserait le mécanisme des exceptions pour signaler que la connexion était morte, mais non! Ma question est donc, comment puis-je savoir du côté client par exemple, que le serveur vient de fermer la connexion et que donc, je dois abandonner le dialogue?

  2. #2
    Membre expérimenté Avatar de Betatesteur
    Inscrit en
    Juillet 2003
    Messages
    210
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 210
    Par défaut
    en grosso modo si ton apli distant n'est plus connecté, qu'il te signal qu'il s'est déconnecté du réseau? c'est ça?

  3. #3
    Membre éclairé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2005
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Philippines

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2005
    Messages : 244
    Par défaut
    Je sais pas si il y a un rapport mais la fonction "flush()" des OutputStream ne servirai pas a cela?

    Et personnelement l'inverse (avec un InputStream) marche tres bien: si celui qui envoi coupe la connexion InputStream.read() me renvoi -1

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

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Par défaut
    Il y a quelques années, la solution que j'avais trouvée était d'effectuer un dialogue et non un monologue, le serveur renvoit par exemple un "ok" ou "nok" après chaque envoi du client pour l'informer de l'issu de traitement ( et dans ton cas, de l'état de la communication ).
    De cette manière le write ne levant pas d'exception, ce n'est pas grave car le read pour lire la réponse du serveur - lui - leve cette exception en cas de coupure réseau / fermeture des flux.

  5. #5
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    Il faut lire la doc !!!!

    Citation Envoyé par [url=http://javasearch.developpez.com/j2se/1.4.2/docs/api/java/io/PrintWriter.html
    PrintWriter[/url]]Methods in this class never throw I/O exceptions. The client may inquire as to whether any errors have occurred by invoking checkError().
    C'est donc tout à fait normal de ne pas avoir d'exceptions !!!! PrintStream est plutôt destiné à écrire dans les flux "sûrs"...

    Je te conseille d'utiliser un Writer simple à la place et la méthode write() qui renvoit une exception

    a++

Discussions similaires

  1. Comment vérifier si Excel est installé ?
    Par mathieutlse dans le forum API, COM et SDKs
    Réponses: 9
    Dernier message: 16/08/2017, 18h49
  2. Réponses: 1
    Dernier message: 26/09/2010, 19h28
  3. Réponses: 3
    Dernier message: 05/04/2005, 14h36
  4. Réponses: 11
    Dernier message: 27/03/2005, 15h13
  5. comment vérifier qu'une table esclave vérifie une condition?
    Par loikiloik dans le forum Langage SQL
    Réponses: 2
    Dernier message: 20/04/2004, 16h48

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