Socket Closed Exception verhindern

H0m3r

Neues Mitglied
Ich zeig euch erstmal kurz mein Programm und darauf folgt dann die Problembeschreibung.

Client.java
Java:
import java.io.InputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;

public class Client extends Thread {
	private Socket socket;
	private InputStream in;
	private OutputStream out;

	public Client(Socket socket) {
		this.socket = socket;
	}

	public void run() {
		try {
			in = socket.getInputStream();
			out = socket.getOutputStream();

			while (true) {
				int len = in.read();

				if (len == -1) {
					break;
				}

				len = (len << 8) + (in.read() & 0xFF);
				byte[] buffer = new byte[len];
				in.read(buffer, 0, len);
				[...]
			}
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			disconnect();
		}
	}

	public void disconnect() {
		if (socket != null && !socket.isClosed()) {
			try {
				out.close();
				in.close();
				socket.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
}

Jetzt hab ich folgendes Problem: Möchte ich den Client disconnecten, rufe ich die Methode disconnect auf. Hierbei kommt es immer zu einer Exception, da in Zeile 21 zu diesem Zeitpunkt versucht wird vom Stream zu lesen. Gibt es eine Möglichkeit diese Exception zu verhindern?
 
Zuletzt bearbeitet von einem Moderator:
S

SlaterB

Gast
nicht wirklich, außer du setzt einen Timeout und wartest mit dem Schließen auf eine Gelegenheit zwischen zwei read()-Aufrufen,
aber das ist unnötig,
sieh die Exception nicht als etwas schlimmes an sondern zunächst mal als eine Information,
wenn du dann noch vor dem close()-Aufruf irgendeinen boolean auf true gesetzt hast kannst du das im catch berücksichtigen und auf das ansonsten nötige Loggen der Exception verzichten,
 
Zuletzt bearbeitet von einem Moderator:

Michael...

Top Contributor
Man könnte das zwar mit einem sauberen "Client verabschiedet sich beim Server und Server verabschiedet sich beim Client" vermeiden, ist aber m.M. den Aufwand nicht wert.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Socket Socket is closed Netzwerkprogrammierung 22
F JSch - inputstream is closed Netzwerkprogrammierung 13
W socketexception socket closed Netzwerkprogrammierung 2
K java.net.SocketException: socket closed Netzwerkprogrammierung 3
T Webserviceaufruf verursacht eine Exception Netzwerkprogrammierung 3
R Socket FATAL EXCEPTION MAIN bei Socket based client/server app Netzwerkprogrammierung 2
D Exception Handling bei In/Outputsockets in eigenen Threads Netzwerkprogrammierung 1
A Cast Exception bei einfachem RMI Beispiel Netzwerkprogrammierung 3
M Socket Exception tritt auf - weiß nicht weiter Netzwerkprogrammierung 3
K Socket Exception Connection reset Netzwerkprogrammierung 9
C ObjectInputReader wirft beim zweiten Aufruf eine Exception Netzwerkprogrammierung 3
M Socket TCP keep alive Exception wird nicht ausgelöst Netzwerkprogrammierung 11
G Exception: Connection reset by peer: socket write error Netzwerkprogrammierung 2
A Socket Socket Verbindung unterbrochen --> keine Exception Netzwerkprogrammierung 7
M RMI unmarshaling exception ??? Netzwerkprogrammierung 2
D Socket Streams schliessen .. Exception gewollt? Netzwerkprogrammierung 4
K Socket Socket Exception Netzwerkprogrammierung 3
eQuest RMI Unserializable Exception Netzwerkprogrammierung 4
F Bekomme NoSuchElement Exception Netzwerkprogrammierung 5
S RMI Exception Netzwerkprogrammierung 2
T rmi ssl zu große Objekte übergeben -> Exception Netzwerkprogrammierung 10
clupus Exception beim Schließen eines Sockets Netzwerkprogrammierung 6
G Exception javax.naming.CommunicationException Netzwerkprogrammierung 16
G Nullpointer Exception - Multithreading Netzwerkprogrammierung 25
G XML-RPC -> Exception $Proxy0-Unknown Source-No such handl Netzwerkprogrammierung 8
T Exception serialisieren? Netzwerkprogrammierung 5
K öffnen des socket schlägt fehl -> ABER: keine exception . Netzwerkprogrammierung 2
M ois nicht null, aber ois.getObject liefer exception Netzwerkprogrammierung 3
R ObjectOutput- / ObjectInputStream Exception? Netzwerkprogrammierung 2
D EA-Exception Network Adapter macht probleme Netzwerkprogrammierung 2
F Java Mail . Exception java.lang.NoClassDefFoundError Netzwerkprogrammierung 2
M Exception in thread "main" java.lang.NoClassDefFou Netzwerkprogrammierung 2
J JavaMail Exception bei senden an anderen Server. Netzwerkprogrammierung 8
M schreiben auf geschlossenen Socket ohne Exception Netzwerkprogrammierung 6
R LINUX: getHostAddress() und getHostName() werfen Exception Netzwerkprogrammierung 6
8 PrintWriter Exception Netzwerkprogrammierung 3
D socket exception + timing probleme Netzwerkprogrammierung 2
A Exception bei Cookie lesen Netzwerkprogrammierung 2
A Socket Threadunterbrechung verhindern Netzwerkprogrammierung 4

Ähnliche Java Themen


Oben