# Probleme mit Threads (Client terminiert)



## Joex (13. Jul 2010)

Hallo Leute,
ich bin Neuling in Sachen Java. Trotz allem muss ich mich zwecks Uni an der Netzwerkprogrammierung versuchen. Im Moment scheitere ich daran, dass der Client nach Sendung seines Nicks terminiert.
Zusätzlich bekomme ich dann eine Menge Exceptions an den Kopf geworfen.

Mein Aufbau ist folgender:
Ein Server, welcher nach eingehender Verbindung über einen ServerRequestWorker Threads für die Clients startet.
Clients welche im Moment nur ein Nick schicken und auch Threads starten, falls sie etwas geschickt bekommen.

Ich habe keine Ahnung ob der Aufbau sinnvoll ist.
Und da ich jede Klasse hier einzeln posten müsste, lade ich mal schnell meinen Quelltext hoch.

Vielen Dank falls sich einer die Zeit nehmen sollte mein Problem mal kurz zu begutachten.


----------



## tuxedo (14. Jul 2010)

Die Exception bzw. der Stacktrace wäre interessant gewesen ..

- Alex


----------



## Marcinek (14. Jul 2010)

Threads startet man mit start und nicht mit run.

Eventuell liegst daran.

Außerdem ist in dem Worker nix, was ihm sagen sollte, dass er etwas immer wieder tun soll.

ATM macht er einmal was und terminiert normal.


----------



## Joex (14. Jul 2010)

Das wird als Exception gezeigt:

java.io.EOFException
	at java.ibjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2281)
	at java.ibjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:2750)
	at java.ibjectInputStream.readStreamHeader(ObjectInputStream.java:780)
	at java.ibjectInputStream.<init>(ObjectInputStream.java:280)
	at Netzwerk.ClientRequestWorker.start(ClientRequestWorker.java:30)
	at Netzwerk.Client.<init>(Client.java:26)
	at Netzwerk.Client.main(Client.java:42)

@Marcinek:
Wie könnte ich denn z.B sagen, dass die Threads erst geschlossen werden, wenn ich z.B. "Bye" in die Konsole eingebe?

EDIT: Und wo ist der Unterschied zwischen run() und start() ?


----------



## Marcinek (14. Jul 2010)

run() ist eine einfache methode
start() Erstellt ein neuen Thread und führt dann die run() methode aus

Dein Fehler liegt darin, dass der Server scheinbar keine Daten bekommt, aber welche lesen möchte und bekommt eine End of File exception.

Also ende von Daten


----------

