# Client Server Problem, empängt oder sendet nichts



## VBKenner (30. Dez 2005)

Hallo
Ich hab hier ein Problem, das bringt mich um den Verstand!
http://xidev.xi.funpic.de/java/

dort clientservervbkenner.zip

downloaden.

Es sind 2 Projekte, beide in Eclipse programmiert.


Ich beschreibe am besten kurz was gemacht wird, damit ihr mir schneller helfen könnt

Der Server erstellt 3 Objekte:
NetSocket (stellt den Socket bereit und BufferedReader sowie den PrintReader)
ConsoleDataArrival (extends Thread und wartet auf Userinput über die Console!)
NetDataArrival (extends Thread und wartet auf einkommende Nachrichten über den Socket!)

Das gleiche macht auch der Client (nur halt leicht verändert)

Beide scheinen Verbunden zu sein (gibt ja auch keine Exceptions) Man kann auch was schreiben und beide Threads laufen...
Nur Nachrichten kommen irgendwie nicht an, entweder es liegt am Verschicken an einer Stelle oder am Empfangen. Und es gibt keine Errors!

Um das Problem einzugrenzen gabe ich einen kleinen Clienten geschrieben der einfach nur zum Server connected und eine Nachricht abschickt, nur hier tritt eine SocketException auf...


> java.net.SocketException: Connection reset
> at java.net.SocketInputStream.read(Unknown Source)
> at sun.nio.cs.StreamDecoder$CharsetSD.readBytes(Unknown Source)
> at sun.nio.cs.StreamDecoder$CharsetSD.implRead(Unknown Source)
> ...



Und das wiegesagt nur wenn man den vereinfachten Clienten benutzt.


----------



## VBKenner (30. Dez 2005)

hier die beiden Programm gepasted:
server: http://relaxserver.pastebin.com/483972
client: http://relaxclient.pastebin.com/483973


----------



## VBKenner (30. Dez 2005)

es lag an folgender fehlenden Zeile:

```
netSocket.netOut.flush();
```
[/code]


----------



## Grizzly (31. Dez 2005)

Eigenes Problem in 7 Stunden und 1 Minute gefunden. Ist doch was.


----------



## Guest (31. Dez 2005)

alternativ kann kann man einfach diese Zeile:

```
netOut = new PrintWriter(netSocket.getOutputStream());
```
in:

```
netOut = new PrintWriter(netSocket.getOutputStream(), true);
```
unändern.

Damit wird auto-flushing aktiviert.


----------

