Nu e asa simplu sa faci asta. Problema principala e urmatoarea, cum iti dai seama unde incepe si unde se termina o variabila si incepe alta in sir-ul tau? Daca ai date de transmis prin retea, atunci cel mai ok ar fii sa trimiti datele pe rand. Daca e vorba de vreun struct/class atunci trimiti membri, iar la celalalt capat ii citesti si construiesti un nou obiect(struct sau class). Trebuie insa sa tii cont de cum ajung datele, trebuie sa gasesti si acolo o metoda sa delimitezi ce trimiti, cand trimiti. Eu in general incerc sa fac ceva gen pachete, verific daca ce am de transmis e mai mare de 255 bytes. Daca nu este, trimit 0 pentru ca este mai mic decat 255 si dupa trimit numarul de bytes pe care trebuie sa ii citesc, dupa care trimit ce am de trimis. Daca am mai mult de 255 bytes, trimit numarul de block-uri de 255 bytes(spre exemplu am 1024 bytes de transmis), in cazul asta 4, urmat de numarul de bytes ramasi de transmis(4). Ambele numere le transmit sub forma de unsigned char(poate sa contina valori de la 0 la 255) iar cand le primesc le transform in int. Nu stiu daca e cea mai eficienta solutie sau cea mai buna, dar la ultimele programe la care am lucrat cu sockets, asa am facut si mi-a mers bine.