# Datenautausch Client/Server , hab da ein kleines problem



## Guest (3. Jul 2005)

Hi,

ich habe einen kleinen server + client erstellt. Der client sendet eine Anfrage an den Server und wartet auf dessen antwort. Geschrieben bzw gelesen wird mit der BufferedReader/Writer klasse. Im prinzip funktioniert es, nur hab ich ein problem beim emfpangen der daten. Wenn ich z.B. einen text in byteform an den server übertrage, liesst dieser byte für byte in einer while schleife aus, bis -1 (ende des streams) erreicht wurde. Problem ist nun aber das er anscheinend nie diese -1 erreicht, bzw erst wenn ich auf der clientseite den BufferedoutputStream mit close() schliesse. Wenn ich das allerdings mache bekomm ich einen fehler (socket closed) wenn ich nun die antwort vom server einlesen will. Hat jemand eine idee?

                         auszug aus dem Server-Quelltext
                        /#####################  Client - Anfrage einlesen #################

	        //Bytes aus dem Stream einlesen  
	        //und zu einem String zusammenfügen
	        int byteFromStream;
	        while  ((byteFromStream = in.read()) != -1) 
	        {
	        	requestFromClient = requestFromClient +(char) byteFromStream;
	        }

	        System.out.println("Request:" + requestFromClient);

                        //Nun folgt das senden der Daten (sieht genauso aus wie beim client)


 auszug aus dem Client-Quelltext
/#####################  Client - Anfrage zum Server senden #################
//Daten in den Stream zum Server schicken
      out.write(char_array);     
      out.flush();
      out.close();    //<-- wenn ich den BufferedOutputStream schliesse kann ich über den Buffered InputStream nicht mehr einlesen ???

     //Hier folgt das einlesen der Serverantwort (identisch mit dem quelltext oben)


----------



## Nick H. (3. Jul 2005)

du musst einfach ein eigenes end-Zeichen machen
zB 2 Absätze oder so

dann musst du halt immer abfragen ob gerade ein Absatz geschickt wurde
wenn ja geht der Zähler auf 1 und wenn dann noch einer kommt
geht er auf 2 und die Schleife wird beendet

mach ich zumindst so

auch wenn ich nicht weiß warum keine - 1 kommt
müsste ja eigentlich...


----------



## Gast (3. Jul 2005)

okai wirds mal testen. Ich verstehe nur nicht warum der ganze Socket geschlossen wird wenn ich mit out.close();  meinen Outputstream schliesse.


----------



## Nick H. (3. Jul 2005)

dann lass in doch einfach offen ;-)
mach ich auch immer
einfach alles am Ende schließen


----------

