# Problem mit ObjectInputStream



## Tic Rederon[Gast] (22. Apr 2006)

Der Client beginnt beginnt mit 

```
Socket server = new Socket( "localhost", 120 );
```

egal ob ich 

```
ObjectInputStream input1 = new ObjectInputStream(server.getInputStream());
```
oder 			

```
InputStream os = server.getInputStream();
ObjectInput oo = new ObjectInputStream(os);
```
benutze, sobald diese funktion/en drinnen sind, hängt das programm fest

Der Server schaut so aus 

```
client = server.accept();
ObjectInputStream input1 = new ObjectInputStream(client.getInputStream());
ObjectOutputStream output1 = new ObjectOutputStream(client.getOutputStream());
output1.writeInt(123);
output1.flush();
```

verbindung aufbauen und connecten funktioniert 100%


----------



## The_S (22. Apr 2006)

Du musst zuerst den ObjectOutputStream erzeugen und dann den ObjectInputStream. 

Erklärung:

Ein ObjectInputStream braucht immer auf der anderen Seite sein Gegenstück den ObjectOutputStream. Damit gewährleistet ist, dass dieser ObjectOutputStream erstellt ist blockiert der ObjectInputStream sich so lange bis auf der anderen Seite der ObjectOutputStream erzeugt ist (hier ist anzumerken, dass der ObjectOutputStream bei seiner Erzeugung ein kleines Packet mit "Hallo, ich bin da kannst weitermachen" (oder so ähnlich  ) versendet).

Wenn du jetzt beim Server zuerst einen OIS erstellst blockiert der so lange bis vom Client die Nachricht "Hallo, ich bin da kannst weitermachen" eintrudelt. Blöderweiße erstellst du ja auf der Client-Seite auch zuerst den OIS und hier wird auch gewartet. Somit hasten nen erstklassigen DeadLock erzeugt  .


----------



## Tic Rederon[Gast] (22. Apr 2006)

hehe
danke! 

jetzt versteh ichs, na wenigstens hab ich irgendwas geschafft 

nu funktionierts auch!


----------

