Comment gérer un broken pipe
Bonjour à tous,
J'ai dans mon application une communication avec un serveur. Ce serveur peut parfois fermer la connexion pour X raisons. Coté Java je reçois donc une exception broken pipe :
Code:
1 2 3 4 5 6
| try {
this.client.getWriter().write(buffer);
this.client.getWriter().flush();
} catch(IOException e) {
this.client.close();
} |
J'essai d'écrire mais la connection à été fermé par le serveur , j'ai donc l'exception broken pipe. De là j'appelle la methode de fermeture de mon client réseau :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
public void close()
{
if(this.socket != null && !this.socket.isClosed()
{
try{
this.writer.write(bufferCloseConnection);
this.writer.flush();
this.writer.close();
this.reader.close();
this.socket.close();
} catch(IOException e) {
e.printStacktrace();
}
}
} |
Or cette méthode de fermeture envoi normalement un message au serveur pour l'informer que l'on ferme la connexion. Message qui ne peut être envoyé à cause de l'exception précédente.
D'ou ma question , comment gérer au mieux cette exception broken pipe ? Devrais je plutôt faire une seconde méthode de fermeture qui ne serait appelée que dans le cas ou la fermeture est non demandée par le client ?
Est il nécessaire de procéder au close() du writer/reader et de la socket sachant que la connexion à été fermé par le serveur ?
merci