Need help receiving ByteArray data
Posted
by k80sg
on Stack Overflow
See other posts from Stack Overflow
or by k80sg
Published on 2010-03-22T10:31:31Z
Indexed on
2010/03/22
10:51 UTC
Read the original article
Hit count: 504
java
Hi folks, I am trying to receive byte array data from a machine. It sends out 3 different types of data structure each with different number of fields which consist of mostly int and a few floats, and byte sizes, the first being 320 bytes, 420 for the second type and 560 for the third. When the sending program is launched, it fires all 3 types of data simultaneouly with an interval of 1 sec. Example:
Sending order: Pack1 - 320 bytes 1 sec later Pack2 - 420 bytes 1 sec later Pack3 - 560 bytes 1 sec later Pack1 - 320 bytes ... .. .
How do I check the incoming byte size before passing it to:
byte[] handsize = new byte[bytesize];
as the data I receive are all out of order, for instance using the following the read all int:
System.out.println("Reading data in int format:" + " " + datainput.readInt());
I get many different sets of values whenever I run my prog although with some valid field data but they are all over the place.
I am not too sure how exactly should I do it but I tried the following and apparently my data fields are not receiving in correct sequence:
BufferedInputStream bais = new
BufferedInputStream(requestSocket.getInputStream());
DataInputStream datainput = new DataInputStream(bais);
byte[] handsize = new byte[560];
datainput.readFully(handsize);
int n = 0;
int intByte[] = new int[140];
for (int i = 0; i < 140 ; i++) {
System.out.println("Reading data in int format:" + " " + datainput.readInt());
intByte[n] = datainput.readInt();
n = n + 1;
System.out.println("The value in array is:" + intByte[0]);
System.out.println("The value in array is:" + intByte[1]);
System.out.println("The value in array is:" + intByte[2]);
System.out.println("The value in array is:" + intByte[3]);
Also from the above code, the order of the values printed out with
System.out.println("Reading data in int format:" + " " + datainput.readInt());
and
System.out.println("The value in array is:" + intByte[0]);
System.out.println("The value in array is:" + intByte[1]);
are different.
Any help will be appreciated. Thanks
© Stack Overflow or respective owner