Ciao a tutti,
sto realizzando un progettino che effettua TCP/IP Tunneling utilizzando le Raw Sockets su piattaforma UNIX in linguaggio C.
Io creo "manualmente" gli header TCP e IP mettendo i vari byte in vettori di char che poi voglio concatenare al messaggio vero e proprio (una stringa) e spedire via raw socket.
Ho il seguente problema, quando vado a scrivere negli header TCP e IP dei valori esadecimali '0x00' oppure il carattere '0' le funzioni che utilizzo per creare la stringa da inviare li interpretano come terminatori quindi il programma: si blocca se uso una memcpy oppure mi compatta gli spazi null se uso strcpy o strcat..
Quindi l'entità che riceve il pacchetto lo riceve privato dei caratteri 0x00 che invece sono fondamentali nella costruzione dei pacchetti TCP e IP.
La mia domanda è: c'è il modo di creare una stringa o vettore di caratteri contenente dei caratteri 0x00 o '0' in modo che l'applicazione non li interpreti come terminatori?
Mi conviene utilizzare un altro tipo di dato per memorizzare le informazioni?

Grazie

Ciao

Giova