Ciao a tutti,
sto provando a scrivere un piccolo programma che permetta ad un server di inviare al client un file qualunque di x bytes attraverso le funzioni send() e recv().
Ho cercato sul forum e nella rete, e sono arrivato alla conclusione (correggetemi se sbaglio) che questa è la procedura da utilizzare:
Server:
1. Aprire il file in input
2. read() il contenuto del file e metterlo in un buffer temporaneo
3. Inviare il buffer con send()
4. "Loopare" gli ultimi 2 punti fino a che buf == file.eof()
Client:
1. Aprire un file in output
2. recv() il buffer
3. write() sul file
4. "Loopare" gli ultimi 2 punti fino a che il server invia dati.
A questo punto mi stavo chiedendo:
a) sarebbe opportuno inviare insieme al buffer un numero che permetta al client di riordinare e ricostruire i frammenti (uso SOCK_STREAM)? Ad esempio mettere il buffer in una struttura con un membro int n_ordine
b) quanto deve essere grande il buffer? Devo occuparmi in qualche modo dell'incapsulazione?
c) eventuali controlli sull'integrità?
Avevo scritto qualche riga ma evito di appesantire ulteriormente il topic, tanto funziona talmente male che forse conviene che prima mi faccia un'idea più chiara in merito. Poi lo faccio per imparare, se me lo correggete voi non c'è gusto
Sono ben accetti anche documenti da leggere.