# Byte für Byte aus InputStream lesen



## Kassel (16. Apr 2011)

Ich wollte fragen ob in.read(); ( in ist der InputStream ) immer ein Byte aus dem Stream ausliesst , ... wenn ich jetzt wieder in.read() aufrufe ... bekomme ich dann dass nächste byte ????

Denn ich habe ein datenprotokoll dass so aussieht: 

s | n | p | 0xB7 | 0x0A | active channels(MSB) | active channels(LSB) | Yaw (MSB) | Yaw (LSB) | Pitch (MSB)  | Pitch (LSB) | Roll(MSB) | Roll(LSB)

( immer 1 byte )
jetzt mchte ich auf daten warten bis 's' ( dez=115 ) kommt , dann lese ich ein weiteres byte und will wissen ist es ein 'n' ( dez=110) ... usw.
Wird dass so gehen ??


```
byte activeChannel;
			int len;
			int stop;
			while((stop=in.read())>-1){
				// prüfe ob "s" gelesen wird
				if(stop==115){
					stop=in.read();
					// prüfe ob "n" gelesen wird
					if(stop==110){
						stop=in.read();
						// prüfe ob "p" gelesen wird
						if(stop==112){
							stop=in.read();
							// prüfe ob "0xB7" gelesen wird
							if(stop==183){
								len=in.read();
								byte[] data=new byte[len];
								// grösse der SENSOR_DATA
								for(int i=0;i<len;i++){
									stop=in.read();
									data[i]=(byte)stop;
								}
```


----------



## Murray (16. Apr 2011)

Kassel hat gesagt.:


> Ich wollte fragen ob in.read(); ( in ist der InputStream ) immer ein Byte aus dem Stream ausliesst , ... wenn ich jetzt wieder in.read() aufrufe ... bekomme ich dann dass nächste byte ????


Ja, das ist so - read() liefert immer das nächste Byte (als int zwischen 0 und 255) ; es gibt nur zwei Ausnahmen:
1. es gibt keine Daten mehr, weil alle bereits gelesen wurde -> es kommt -1 zurück
2. es gibt keine Daten mehr, weil der Kommunikationskanal zusammengebrochen ist (z.B. bei Netzwerkverbindungen) -> es wird eine Exception geworfem


----------



## Kassel (17. Apr 2011)

Das heisst es sollte so klappen ... da ich genau nach den Voraussetzungen von dir ausgegangen bin ... wenn jemand einen einwand gegen den code schnipsel hat bitte melden , damit ich den fehler ( wenn er da ist ) beheben kann ... danke im voraus


----------



## Crian (20. Apr 2011)

Ja: Bei den weiteren Reads prüfst du nicht auf -1.


----------



## s4ke (23. Apr 2011)

Sollte das nicht wegfallen? Weil wenn das gleich -1 ist, dann wird es doch auch nie 120 oder was auch immer?


----------



## Empire Phoenix (24. Apr 2011)

unten bei sensordata inner vfor scheilfe felht der check,(kann ja auftreten falls der sensor microprozessor abschmiert , ect)


----------

