K
Kinimod
Gast
Hi Leute,
habe nur mal kurz ne definitionsfrage.
und zwar wenn ich als client mithilfe eines InputStream-Objekts und der zugehörigen Methode read(byte[] b) den OutputStream eines Servers abhorche, dann gibt mir read ja solange die anzahl der gelesenen bytes aus, bis laut definition "das ende des streams" erreicht ist.
aber was genau ist dieses "ende des streams" ?
kurzer code, damit ihr auch verstehen könnt, warum ich die frage stelle (ausschnitt aus dem client-code):
so, nun ist der server allerdings so strukturiert, dass er permanent mit dem client verbunden ist, d.h. jederzeit der OutputStream zum Clienten offen ist.
Mein Anliegen ist es nun, dass der Server irgendwas sendet, der client empfängt es mithilfe des oben dargestellten codes und springt auch anschließend aus der schleife raus, und bleibt nicht in der whileschleife hängen und wartet einfach auf weiteren input ^^.
und genau hier steckt mein problem, denn obwohl an sich ja keine daten vom server mehr kommen, wartet die methode read ja auf weitere und blockiert den prozess ...
habe das ganze jetzt mittels socket.setSoTimeout() gelöst, allerdings finde ich das irgendwie unelegant und hoffe, dass mich eine genaue definition von "ende des streams" weiterbringt.
Vielen dank schonmal im voraus an alle
Dominik
habe nur mal kurz ne definitionsfrage.
und zwar wenn ich als client mithilfe eines InputStream-Objekts und der zugehörigen Methode read(byte[] b) den OutputStream eines Servers abhorche, dann gibt mir read ja solange die anzahl der gelesenen bytes aus, bis laut definition "das ende des streams" erreicht ist.
aber was genau ist dieses "ende des streams" ?
kurzer code, damit ihr auch verstehen könnt, warum ich die frage stelle (ausschnitt aus dem client-code):
Code:
String message=null;
try {
int length;
byte[] buffer=new byte[4096];
message="";
while((length=in.read(buffer))!=-1)
message=message+new String(buffer, 0, length);
return message;
}
catch(Exception e) {
return message;
}
so, nun ist der server allerdings so strukturiert, dass er permanent mit dem client verbunden ist, d.h. jederzeit der OutputStream zum Clienten offen ist.
Mein Anliegen ist es nun, dass der Server irgendwas sendet, der client empfängt es mithilfe des oben dargestellten codes und springt auch anschließend aus der schleife raus, und bleibt nicht in der whileschleife hängen und wartet einfach auf weiteren input ^^.
und genau hier steckt mein problem, denn obwohl an sich ja keine daten vom server mehr kommen, wartet die methode read ja auf weitere und blockiert den prozess ...
habe das ganze jetzt mittels socket.setSoTimeout() gelöst, allerdings finde ich das irgendwie unelegant und hoffe, dass mich eine genaue definition von "ende des streams" weiterbringt.
Vielen dank schonmal im voraus an alle
Dominik