# SSH-Kommunikation - Ende eines Streams nicht erkenntlich



## 1337iceskater (8. Mrz 2011)

Hallo Leute,

wie im Thema schon gesagt, arbeite ich mit SSH (Ganymed SSH2).

Dabei hole ich mir die stdout und stdin von der Host und arbeite damit, soweit so gut.

Mein Problem tritt recht häufig auf: Scheinbar ist die Verbindung nicht immer voll da usw. jedenfalls kann ich im Normalfall mit BufferedReader.ready() herausfinden, ob ein Stream bereit ist, ein Zeichen auszugeben (so, dass man ohne Blockieren lesen kann). Daher lasse ich meinen Reader so arbeiten:


```
while(buf.ready()){
	reset = false;
	tried = false;
	c = (char)buf.read();
	s+=c;
}
```

Diese Schleife wird aber schon vorher abgebrochen, da scheinbar einige Responses von der Host etwas brauchen und das selbe zur Folge hat...

Hat jemand eine Idee, wie ich sicher herausfinde, ob der Stream jetzt wirklich auf eine Usereingabe wartet bzw. gibt es einen Algorithmus der das evtl sogar schon kann?

Danke schonmal für eure Ideen. Ich freue mich immer auf hilfreiche Ratschläge.

LG Stefan


----------



## HoaX (8. Mrz 2011)

Garnicht, denn woher willst du wissen ob das Progamm auf der anderen Seite jetzt wirklich funktioniert, oder wegen zu wenig Speicher ne Fehlermeldung ausspuckt die du lesen solltest.
Wenn du mehr verrätst was du da mit SSH treibst und auf was für Daten du da wartest, dann kann man sicherlich mehr sagen bzw Tipps geben wie man es anders/besser macht.


----------



## 1337iceskater (9. Mrz 2011)

Ich habe von meinem Chef jetzt gesagt bekommen, wie ich es machen soll:

Ich lese wie gehabt aus dem Stream und zwar entweder, bis ein bestimmter String auftaucht, der der Funktion mitgegeben werden muss oder eben das vorher definierte Timeout überschritten wird ;-)
Das klingt für mich nach ner vernünftigen Lösung, zumal ich sowieso den output verwerten muss ;-)

Trotzdem danke.
LG


----------

