Keine IOException beim schreiben Socket

DEvent

Bekanntes Mitglied
Hallo,
Ich verstehe nicht, wieso ein Socket, der nicht mehr offen ist keine IOException auslöst. Mein Programm macht folgendes:

a) Ein Server wartet auf eingehende Verbindung auf einem TCP Port. b) Ein Client verbindet sich zum Server, client = server.accept(); liefert mir einen client-Socket. c) Dann benutze ich dessen Output Stream um Daten an den Client zu schicken.

Eine weitere Kommunikation findet nicht statt, der Client schickt kein OK, der Server schickt einfach Daten. Ich benutze dafür einen PrintWriter um einen String zu schicken.

Wieso bekomme ich keine IOException wenn der Client terminiert wird? Mein Java Programm schreibt einfach weiter in den PrintWriter, als ob nichts wäre.

Der Client und der Server sind beide an Localhost. Ich benutzte das Programm nc um die empfangenen Daten auf der Konsole aus zu geben.

Danke, Erwin.
 
Ok, die Methoden der Klassen PrintWriter und PrintStream werfen unter keinen Umständen eine Exception. Das war mir neu. Man muss also mit checkError() überprüfen, ob eine Exception geworfen wurde.

Ist ein wenig Umständlich und vollkommen anderes als alle anderen Stream/Writer Klassen funktionieren.
 
Wieso benutzt du einen PrintWriter? Must du deinen String noch (um)formatieren bevor du ihn abschickst?

Wenn nicht, dann benutz stattdessen am besten einen BufferedWriter.
 

Zurück
Oben