rozy
Ja napravim buffer od 1 KiB, pa koristim read da učitam iz datoteke koju sam prethodno otvorio s open. read
mi vrati broj stvarno pročitanih okteta, pa toliko onda pošaljem sa send. Ta brojka je bitna jer veličina datoteke možda nije višekratnik 1 KiB, pa ne smijem svaki put na klijent slijepo slati cijeli buffer. Taj postupak s čitanjem i slanjem ponavljam dokle god mi read
ne vrati da je pročitano 0, što znači da sam na kraju datoteke i da nema više bajtova.
Ja sam koristio Unix syscallove open
i read
, ali postoje i funkcije C standard libraryja fopen i fread. Kako u ostatku ovog programa puno koristim syscallove, odlučio sam ih i koristiti za čitanje datoteka radi ujednačenosti, te mi je izgledalo kao da je lakše handleati errore u syscallovima. Negativna povratna vrijednost je uvijek greška za read
, dok fread
vraća 0 i kad dođe do kraja datoteke, i ako se dogodi greška, pa s feof/ferror provjeravati koje od tog dvoje se dogodilo. Standardne funkcije bih svakako koristio kad bih pisao neki prenosivi program koji mora raditi i na Windowsima, ali se ovdje jako oslanjamo na Unix syscallove pa nema nikakve potrebe za prenosivosti.