Socket InputStream readObject > Connection Reset

Raildex1

Mitglied
Moin moin!

Ich programmier gerade einen multifunktionalen Chat und läuft soweit alles ganz gut.

Das Schicken von Nachrichten funktioniert auch alles.
Es geht mir aber um eine Exception die auftritt, wenn die Methode
Java:
readObject();
vom Socket-InputStream gerade lesen möchte, aber der Client abbricht.
Das kann ja durchaus gerne mal passieren, dass der Client einfach mal das Programm ausschaltet.
Die Exception lautet wie folgt:
java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:196)
at java.net.SocketInputStream.read(SocketInputStream.java:122)
at java.net.SocketInputStream.read(SocketInputStream.java:210)
at java.io_ObjectInputStream$PeekInputStream.peek(ObjectInputStream.java:2293)
at java.io_ObjectInputStream$BlockDataInputStream.peek(ObjectInputStream.java:2586)
at java.io_ObjectInputStream$BlockDataInputStream.peekByte(ObjectInputStream.java:2596)
at java.io_ObjectInputStream.readObject0(ObjectInputStream.java:1318)
at java.io_ObjectInputStream.readObject(ObjectInputStream.java:370)
at de.borstgaitzsch.transfer.ReceiveListener.run(ReceiveListener.java:50)
und die Zeile ist diese hier:
Java:
        JeezyMessage receive = (JeezyMessage) ois.readObject();

wie gesagt, ich möchte nur die Exception loswerden, so dass das Socket geschlossen werden kann und der Server die Verbindung wieder freigibt.
 

Sen-Mithrarin

Gesperrter Benutzer
dafür brauchen wir erstmal mehr code ... vor allem die stelle des read-loops um zu gucken wie die exception gefangen wird
sinnvoll wäre, wenn Java7 genutzt wird, try-with-resources
 

Raildex1

Mitglied
Java:
 @Override
  public void run()
  {
    while (socket.isConnected())
    {
      try
      {
        System.out.println("Waiting for incoming message...");
        JeezyMessage receive = (JeezyMessage) ois.readObject();
        if (receive != null)
        {
          System.out.println("Message received...");
          client.forwardMessage(receive);
        }
      }
      catch (IOException | ClassNotFoundException ex)
      {
        Logger.getLogger(JeezyServer.class.getName()).
          log(Level.SEVERE, null, ex);
      }
    }
    try
    {
      ois.close();
      socket.close();
    }
    catch (IOException ex)
    {
      Logger.getLogger(ReceiveListener.class.getName()).log(Level.SEVERE, null,
        ex);
    }

  }
das ist meine run-Methode.
 

Sen-Mithrarin

Gesperrter Benutzer
Socket.isConnected() ... schrott
grund : isConnected() übeprüft NICHT ob ein Socket noch verbunden ist ... sondern nur ob er bei abfrage korrekt verbunden war
public boolean isConnected()

Returns the connection state of the socket.
Note: Closing a socket doesn't clear its connection state, which means this method will return true for a closed socket (see isClosed()) if it was successfuly connected prior to being closed.

Returns: true if the socket was successfuly connected to a server
Since: 1.4

gleich vorweg : Socket.isClosed() brauchst du garnicht erst zu versuchen ... wird nur gesetzt wenn man mit Socket.close() den Socket selbst schließt ... und nicht wenn er abbricht
public boolean isClosed()

Returns the closed state of the socket.

Returns: true if the socket has been closed
Since: 1.4
See Also: close()

try-catch innerhalb eines loops der SO nie beendet wird ... schrott
wenn du schon ein while(FLAG) baust ... dann setze dieses im catch-block auch auf false
außerdem : in einen catch-block gehört IMMER ein Throwable.printStackTrace() ... völlig egal ob man logging nutzt !

nachträgliches try-catch um bei getrennter verbindung (was ja wie gesagt bei diesem code SO niemals passieren wird) um die sockets zu schließen ? ... wie gesagt : Java7 und try-with-resources




ergo : du bekommst du Exception völlig zurecht und dein code räumt auch nie auf ... weil du ihn so programmiert hast
google mal wie man richtig mit connections umgeht ... SuFu hilft auch weiter
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
L Socket Wie kann man in Java die Anzahl der Objekte in einem InputStream sehen ohne ihn durchgehen zu müssen Netzwerkprogrammierung 1
S Socket String InputStream in hex umwandeln Netzwerkprogrammierung 1
D GZIP InputStream lesen ohne zu encoden Netzwerkprogrammierung 1
F Java Server Scanner oder InputStream kann nicht gelsesen werden! Netzwerkprogrammierung 6
windl InputStream cachen Netzwerkprogrammierung 3
K Socket InputStream wird nicht erzeugt Netzwerkprogrammierung 4
M Socket InputStream liest nicht vollständig Netzwerkprogrammierung 7
M Was macht Thread, wenn er aus einem "leeren" Inputstream liest ? Netzwerkprogrammierung 5
K Byte für Byte aus InputStream lesen Netzwerkprogrammierung 5
F JSch - inputstream is closed Netzwerkprogrammierung 13
M Socket InputStream sendet ausgaben von OutputStream zurück Netzwerkprogrammierung 2
D Inputstream to Outputstream Netzwerkprogrammierung 3
M InputStream and ObjectInputStream zur gleichen Zeit Netzwerkprogrammierung 11
T Inputstream -> verschiedene Objekte lesen Netzwerkprogrammierung 3
MQue Inputstream Timeout Netzwerkprogrammierung 2
S Servlet InputStream leer?! Netzwerkprogrammierung 14
G HTTP-Request InputStream-Problem Netzwerkprogrammierung 5
P Inputstream "verfügbar" Netzwerkprogrammierung 4
G JPG im InputStream Netzwerkprogrammierung 2
A InputStream liest immer komplettes PHP-Script Netzwerkprogrammierung 6
A InputStream ließt nur 65536 Zeichen anstatt ganzer Puffer Netzwerkprogrammierung 8
A inputstream teilen? Netzwerkprogrammierung 4
D InputStream (Socket) mit BufferedInputStream puffern Netzwerkprogrammierung 2
M Sockets und InputStream Netzwerkprogrammierung 8
R Client nimmt den Inputstream nicht an Netzwerkprogrammierung 5
S Mail anhang in InputStream packen Netzwerkprogrammierung 5
M InputStream - Bytes gehen verloren? Netzwerkprogrammierung 3
E Problem bei Sockets/InputStream über externe Klasse Netzwerkprogrammierung 5
André B. In einen InputStream schreiben? Netzwerkprogrammierung 6
G inputstream hat plötzlich weniger inhalt Netzwerkprogrammierung 8
Z ProgressBar auf BufferedOutput- & -InputStream Netzwerkprogrammierung 2
F ObjectInputStream.readObject() mehrfach aufrufen Netzwerkprogrammierung 2
R Socket readObject und wait() Netzwerkprogrammierung 7
x46 Connection reset by peer: socket write error Netzwerkprogrammierung 6
F Probleme mit Connection Reset bei Telnet Verbindung Netzwerkprogrammierung 1
Thalion TCP Connection zu langsam Netzwerkprogrammierung 2
S Client Server Connection Netzwerkprogrammierung 4
C Handle Connection Problem Netzwerkprogrammierung 3
L ssh connection; Zugriff auf 'screen' Prozess Netzwerkprogrammierung 5
C Client connection per Portforwarding auf einen lokalen Serverport Netzwerkprogrammierung 3
M Connection refused? Netzwerkprogrammierung 2
D Connection refused Netzwerkprogrammierung 3
B Client/Server Connection Problem Netzwerkprogrammierung 2
D Socket Socket absichtlich so schließen, dass Gegenseite java.net.SocketException: Connection reset wirft Netzwerkprogrammierung 4
C Socket Connection refused bei Internetverbindung - Welcher Port? Netzwerkprogrammierung 5
K Socket Exception Connection reset Netzwerkprogrammierung 9
VfL_Freak Socket SocketException: Connection reset Netzwerkprogrammierung 11
C Socket Socket: Connection timed out Netzwerkprogrammierung 3
T Empfangen klappt Senden nicht - Connection timed out Netzwerkprogrammierung 12
H java.net.ConnectException: Connection refused Netzwerkprogrammierung 3
Z Socket Connection reset by peer nur per IP nicht über localhost Netzwerkprogrammierung 13
RELAXccc HTTP Connection timed out: connect ?an was kann es liegen? Netzwerkprogrammierung 4
G Exception: Connection reset by peer: socket write error Netzwerkprogrammierung 2
N Socket verliert die Connection. Netzwerkprogrammierung 4
A UCP Connection über Proxy möglich? Netzwerkprogrammierung 7
M RMI - Connection Problem Netzwerkprogrammierung 7
trash HTTP Internet Connection bei Proxy ?! Netzwerkprogrammierung 3
D Client Server Problem, Methode readline() löst SocketException "Connection reset" aus Netzwerkprogrammierung 8
H RMI Connection refused bei RMI-Registry Netzwerkprogrammierung 10
S SSH-Connection - Auto-Vervollständigung mittels TAB Netzwerkprogrammierung 4
A Chatprogramm: Connection refused Netzwerkprogrammierung 4
T RMI RMI und VPN - callbackObject Connection refused Netzwerkprogrammierung 13
A Socket Client Server Connection wird aufgebaut aber keine daten geschickt. Netzwerkprogrammierung 5
J Connection Speed Test ohne Applet Netzwerkprogrammierung 5
0din Connection refused bei localhost?! Netzwerkprogrammierung 7
M FTP-Connection über FTP-Proxy Netzwerkprogrammierung 20
T Wie connection Reset abfragen/abfangen? Netzwerkprogrammierung 10
A RMI java.rmi.ConnectException: Connection refused to host: 1 Netzwerkprogrammierung 4
M chat funktioniert nicht (Connection refused: connect) Netzwerkprogrammierung 3
G InputStreamReader lässt TCP-Connection offen Netzwerkprogrammierung 9
X URL connection Problem Netzwerkprogrammierung 3
R ConnectException: Connection refused to host: 192.168.1.4 ? Netzwerkprogrammierung 8
sparrow Connection Reset bei Webserver, Java WebStart als Client Netzwerkprogrammierung 9
tfa RMI-Problem: Connection refused to host: 127.0.0.2 Netzwerkprogrammierung 4
G Connection zu MySQL ohne ODBC Netzwerkprogrammierung 8
IT-MaD Connection reset by peer: socket write error Netzwerkprogrammierung 2
B RMI & Connection refused to host Netzwerkprogrammierung 12
G httpUnit: Connection timed out Netzwerkprogrammierung 3
lhein java.io.IOException: Unable to establish loopback connection Netzwerkprogrammierung 4
Paule Connection Applet Servlet ohne Socket bzw RMI Netzwerkprogrammierung 2
B Multithreaded Server: Connection reset Netzwerkprogrammierung 4
T JDBC Verbindungsabbruch (Connection reset) Netzwerkprogrammierung 2
M SocketException: Connection reset Netzwerkprogrammierung 10
G MAC / IP Connection Netzwerkprogrammierung 10
M Problem: connection abbrechen und login erkennen Netzwerkprogrammierung 2
M Umlaute gehen bei URL Connection verloren Netzwerkprogrammierung 6
M seltsam: java.net.SocketException: Connection reset Netzwerkprogrammierung 1
B RMI Connection Problem Netzwerkprogrammierung 13
T Dateien wia P2P Connection versenden Netzwerkprogrammierung 2
D Socketverbindung schlägt fehl - Connection refused: connect Netzwerkprogrammierung 4
H java.net.SocketException: Software caused connection abort Netzwerkprogrammierung 4
R FTP Connection zu Server Netzwerkprogrammierung 4
M Ausgangsport für FTp-Connection festlegen??? Netzwerkprogrammierung 3

Ähnliche Java Themen

Neue Themen


Oben