Az adatátvitel többféleképpen is mehet: mehet a read() ill. write() vagy a send() és recv() rendszerhívásokkal.
A write() rendszerhívás paraméterezése a következo:
write(sd, buff, size);
Ez a buff bufferbol size darab byteot elküld az sd socket-descriptorhoz tartozó (hálózati vagy más) kapcsolatra.
A read() rendszerhívás paraméterezése a következo:
read(sd, buff, size);
Ez a buff bufferbe size darab byteot beolvas az sd socket-descriptorhoz tartozó (hálózati vagy más) kapcsolatról.
Mindketto rendszerhívás visszatérési értéke hiba esetén -1, egyébként pedig az átvitt byteok mennyisége (vigyázni kell! lehet, hogy size-nél kisebb!). Ha a távoli gép a hálózati kapcsolatot lezárta, akkor a read rendszerhívás visszatérési értéke 0.
A send() rendszerhívás paraméterezése a következo:
send(sd, buff, size, flags);
Ez a buff bufferbol size darab byteot elküld az sd socket-descriptorhoz tartozó (hálózati vagy más) kapcsolatra.
A recv() rendszerhívás paraméterezése a következo:
recv(sd, buff, size, flags);
Ez a buff bufferbe size byteot beolvas az sd socket-descriptorhoz tartozó (hálózati vagy más) kapcsolatról.
A fenti két rendszerhívásnál ha a flags paraméter 0, akkor ugyanúgy viselkednek, mint a read illetve write rendszerhívások. Ezen kívül más értékekeit is felvehet, mint például az MSG_OOB-t, ami azt jelenti, hogy a protokoll által definiált sürgos adatként kell az elküldött byteokat kezelni. Másik speciális flag az MSG_PEEK, amely a recv rendszerhívásnál adható át, és az eredménye az, hogy az adatokat bemásolja a rendszer a megadott bufferbe, de az eredeti helyükön is meghagyja. Mindegyik rendszerhívás az átvitt (beolvasott ill. kiírt) adatbyteok számát adja vissza.