Byte für Byte aus InputStream lesen

Kassel

Aktives Mitglied
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 ??

Java:
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;
								}
 
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
 
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
 

Zurück
Oben