# ObjectInputReader wirft beim zweiten Aufruf eine Exception



## Chry007 (16. Jan 2012)

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:


```
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


----------



## Michael... (16. Jan 2012)

Chry007 hat gesagt.:


> danach rennt der ObjectInputReader vom ClientThread immer in eine Exception....


Die wo auftritt und wie lautet? Grundsätzlich sollte die Exception inkl. Stracktrace 
	
	
	
	





```
e.printStackTrace()
```
 ausgeben. Ein 
	
	
	
	





```
System.out.println("Konnte keine Verbindung herstellen");
```
 ist da wenig hilfreich.


Chry007 hat gesagt.:


> [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.


----------



## Chry007 (16. Jan 2012)

Der zweite CatchBlock wird aufgerufen.
Stacktrace:

```
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.


----------



## HoaX (17. Jan 2012)

Dann sendet dein Server wohl irgendwo was anderes als einen String.


----------

