Я пытаюсь получить данные байтового массива с компьютера. Он отправляет 3 различных типа структуры данных
каждое из которых имеет различное количество полей, состоящих в основном из int и нескольких чисел с плавающей запятой, и байтовых размеров, первый из которых составляет 320 байтов, 420 для второго типа и 560 для третьего. Когда запускающая программа запускается, она запускает все 3 типа данных одновременно с интервалом в 1 секунду. Пример:
Заказ на отправку:
Pack1 - 320 байт
Через 1 секунду
Pack2 - 420 байт
Через 1 секунду
Pack3 - 560 байт
Через 1 секунду
Pack1 - 320 байт
...
..
.
Как проверить размер входящего байта перед его передачей:
byte[] handsize = new byte[bytesize];
поскольку все данные, которые я получаю, вышли из строя, например, с использованием следующей операции read all int:
System.out.println("Reading data in int format:" + " " + datainput.readInt());
Я получаю много разных наборов значений всякий раз, когда я запускаю свою прогу, хотя с некоторыми действительными данными поля, но они
повсюду.
Я не совсем уверен, как именно это сделать, но я попробовал следующее, и, видимо, мои поля данных не
получение в правильной последовательности:
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]);
Также из приведенного выше кода порядок значений распечатывается с помощью
System.out.println("Reading data in int format:" + " " + datainput.readInt());
и
System.out.println("The value in array is:" + intByte[0]);
System.out.println("The value in array is:" + intByte[1]);
разные.
Любая помощь будет оценена. Спасибо