G
Guest
Gast
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)
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)