Per i char non devi usare funzioni di conversione....
send(s, &DATO, sizeof(DATO), 0);
In ricezione puoi anche semplicemente leggere un byte alla volta oppure una struttura dati intera:
recv(s, &DATO, sizeof(DATO), 0);
Attenzione nei messaggi lunghi, la recv può anche ritornare prima di aver letto sizeof(DATO).
Come vedi sono perfettamente speculari.
Ovviamente se DATO fosse una struttura più complessa dovresti usare le funzioni di conversione per i dati contenuti nella struttura di dimensione superiore a 1 byte