J'essaie de recevoir des données de tableau d'octets à partir d'une machine. Il envoie 3 différents types de structure de données chacun avec un nombre différent de champs qui consistent principalement en int et quelques flottants, et des tailles d'octets, le premier étant 320 octets, 420 pour le second type et 560 pour le troisième. Lorsque le programme d'envoi est lancé, il déclenche simultanément les 3 types de données avec un intervalle de 1 seconde. Exemple:Besoin d'aide pour la réception de données ByteArray
Envoi commande: Pack1 - 320 octets 1 s plus tard Pack 2 - 420 octets 1 s plus tard Pack3 - 560 octets 1 s plus tard Pack1 - 320 octets ... .. .
Comment puis-je vérifier la taille des octets entrant avant de passer à:
byte[] handsize = new byte[bytesize];
que les données que je reçois sont tous hors d'usage, par exemple en utilisant ce qui suit la lecture tout int:
System.out.println("Reading data in int format:" + " " + datainput.readInt());
Je reçois beaucoup de différents ensembles de valeurs chaque fois que je lance mon prog bien qu'avec quelques données de terrain valides mais elles sont partout.
Je ne suis pas sûr de savoir comment exactement dois-je le faire, mais j'ai essayé ce qui suit et apparemment mes champs de données ne sont pas recevoir en séquence correcte:
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]);
également du code ci-dessus, l'ordre du valeurs imprimées avec
System.out.println("Reading data in int format:" + " " + datainput.readInt());
et
System.out.println("The value in array is:" + intByte[0]);
System.out.println("The value in array is:" + intByte[1]);
sont différents.
Toute aide sera appréciée. Merci