fuocofatuo
13-03-2006, 01:51
FORMULAZIONE BREVE DEL PROBLEMA
Ho tre long. Come posso farli diventare una stringa di 22 caratteri e da lì nuovamente tre long?
FORMULAZIONE ARTICOLATA
Sto programmando pressochè per la prima volta in C, e mi sono un po' impiantato su un problema (credo) molto banale.
Devo creare due programmi, ciascuno con un paio di thread, che si scambiano informazioni tramite pacchetti UDP di dimensione fissa. Per inviare e ricevere i pacchetti uso la socket API relativa, e di conseguenza le funzioni "sendto" e "recvfrom". Con questi pacchetti devo inviare un int e un dato "timespec", inseriti in un messaggio di esattamente 22 byte (i byte in sovrappiù possono assumere qualsiasi valore).
La soluzione che mi sembra più semplice consiste nell'assimilare il contatore e il timespec a tre long allocati in posizioni consecutive di memoria, e nel fargli considerare e spedire una stringa di 22 caratteri che parta da quella posizione. Credo però che, sapendo giocare bene con malloc e cast, sia possibile anche fare a meno di passare ai long, e utilizzare direttamente i dati int e timespec originali. Ammettendo anche che il ragionamento possa essere corretto, il codice che ho scritto non lo è... mi potete dare una mano?
Ho tre long. Come posso farli diventare una stringa di 22 caratteri e da lì nuovamente tre long?
FORMULAZIONE ARTICOLATA
Sto programmando pressochè per la prima volta in C, e mi sono un po' impiantato su un problema (credo) molto banale.
Devo creare due programmi, ciascuno con un paio di thread, che si scambiano informazioni tramite pacchetti UDP di dimensione fissa. Per inviare e ricevere i pacchetti uso la socket API relativa, e di conseguenza le funzioni "sendto" e "recvfrom". Con questi pacchetti devo inviare un int e un dato "timespec", inseriti in un messaggio di esattamente 22 byte (i byte in sovrappiù possono assumere qualsiasi valore).
La soluzione che mi sembra più semplice consiste nell'assimilare il contatore e il timespec a tre long allocati in posizioni consecutive di memoria, e nel fargli considerare e spedire una stringa di 22 caratteri che parta da quella posizione. Credo però che, sapendo giocare bene con malloc e cast, sia possibile anche fare a meno di passare ai long, e utilizzare direttamente i dati int e timespec originali. Ammettendo anche che il ragionamento possa essere corretto, il codice che ho scritto non lo è... mi potete dare una mano?