ObjectInputReader wirft beim zweiten Aufruf eine Exception

Chry007

Mitglied
Hi,
habe folgendes Problem:
Ich möchte eine einfach Chatanwendung schreiben. Mit einem Server, an dem sich beliebig viele Clients anmelden können. Was ein Client schreibt soll an den Server gesendet werden und von dort an alle Clients verteilt werden. Egal von welchem Client, kommt jede Message beim Server an. Die jeweils erste wird auch hervorragend an alle Clients verteilt, danach rennt der ObjectInputReader vom ClientThread immer in eine Exception.... Hier der Code des Threads:

Java:
public class ClientThread implements Runnable {
	
	Client client;
	Socket server;
	ObjectInputStream serverInputStream;
	
	public ClientThread (Client pClient, Socket pServer)
	{
		client = pClient;
		server = pServer;
		try {
			serverInputStream = new ObjectInputStream (server.getInputStream ());
		} catch (IOException e) {
			System.out.println("Konnte keinen InputStream oeffnen");
		}
	}
	
	public void run ()
	{
		String text;
		while (true)
		{
			try {
				text = (String) serverInputStream.readObject();
				client.gui.incomeMessage (text);				
			} catch (ClassNotFoundException e) {
				System.out.println("Konnte keine Verbindung herstellen");
				break;
			} catch (IOException e) {
				System.out.println("Konnte keine Verbindung herstellen");
				break;
			}
		
		}
	}

}

Kann mir jemand einen Denkanstoß geben?

Danke schonmal im Voraus für eure Hilfe.

Gruß,
Chry
 
danach rennt der ObjectInputReader vom ClientThread immer in eine Exception....
Die wo auftritt und wie lautet? Grundsätzlich sollte die Exception inkl. Stracktrace
Code:
e.printStackTrace()
ausgeben. Ein
Code:
System.out.println("Konnte keine Verbindung herstellen");
ist da wenig hilfreich.
[JAVA=24]text = (String) serverInputStream.readObject();[/code]
Werden da auch noch andere Objekte ausser Strings verschickt? Falls nur Strings verschickt und empfangen werden sollen, würde auch ein Writer und Reader anstelle des ObjectStreams ausreichen.
 
Der zweite CatchBlock wird aufgerufen.
Stacktrace:
Code:
java.io.StreamCorruptedException: invalid type code: AC
	at java.io.ObjectInputStream.readObject0(Unknown Source)
	at java.io.ObjectInputStream.readObject(Unknown Source)
	at de.ilp.chat.client.ClientThread.run(ClientThread.java:30)
	at java.lang.Thread.run(Unknown Source)
Die Nachrichten sollen später als Objekt gesendet werden. Mit zusätzlichen Informationen. Daher der Objectreader.
 

Zurück
Oben