Ciao a tutti,
sono alle prese con il seguente programma: copiare alcuni dati in un array contenenti la struttura Pack e poi trasmettere l'array via TCP su sistema Linux. Prima di inviare la struttura ho visto che alcuni dati sono sbagliati, non li copia bene e di conseguenza in ricezione non ottengo la struttura desiderata. Ora vi mostro come copio i dati (riporto il codice essenziale di interesse):
/* Le strutture */
struct Time
{
int counter;
double value[100];
} packTime;
struct Freq
{
int frequency;
double record[50];
} packFreq;
typedef struct Pack
{
int size;
char data[104];
} ;
/* array Pack */
Pack arrayPack[2];
In pratica devo riempire l'array "arrayPack" una volta con una struttura packFreq nel campo data della struttura Pack, e come array di char e una volta con un struttura packTime, sempre nel campo data di Pack.
Ho fatto in questo modo:
arrayPack[0].size = 50; /* valore fittizio */
memcpy(&arrayPack[0].data, (char *) &packFreq, sizeof(packFreq) );
arrayPack[1].size = 50; /* valore fittizio */
memcpy(&arrayPack[1].data, (char *) &packTime, sizeof(packTime) );
Bene se provo a stampare i valori dell'array, non ottengo valori giusti. Per la stampa faccio così:
Pack tmpPack;
memcpy(&tmpPack, &arrayPack[0], sizeof(arrayPack[0]) );
Freq tmpFreq;
memcpy(&tmpFreq, (Freq*) &tmpPack.data, sizeof(tmpFreq) );
Time tmpTime;
memcpy(&tmpTime, (Time*) &tmpPack.data, sizeof(tmpTime) );
Le Strutture che ho chiamato tmpFreq e tmpTime non contengono valori corretti.
Cosa posso fare? Potete dirmi se ho usato un buon metodo con l'array e le memcpy?
Spero di ricevere aiuto, è molto importante.
Grazie a tutti!