Ciao a tutti, devo svolgere questo esercizio di programmazione di rete con linguaggio C:

1) Un processo STUD crea ed utilizza un canale CNL_TX tra se stesso e il server VRF_TX e un secondo canale CNL_RX tra se stesso e un server di verifica VRF_RX
2)Il processo STUD entra in un ciclo dove per ogni itarazione:
-effettua una richiesta di collegamento a VFR_TX (Porta 37998)
-effettua una richiesta di collegamento a VFT_RX (Porta 37898)
-STUD invia sul canale CNL_RX il conteggio degli errori di trasmissione verificatisi durante la verifica (convertito da una sequenza di caratteri terminata da '\n'
-dopo STUD riceve da VFR_TX una sequenza di caratteri alfanumerici (SEQ_LUNGH max 256 caratteri)
-Sul canale CNL_RX il processo STUD deve inviare a VFR_RX ogni singolo carattere ricevuto (invia come ultimo carattere '\n')
3)STUD chiude i canali di rete.

Per risolvere il problema ho impostato il seguente schema:

Un processo P crea i canali per la comunicazione e successivamente (dopo aver dichiarato le variabili) forka in un figlio F, e poi va in wait. Ottengo cosi un figlio (del padre P) che a sua volta forka in un nipote N (figlio del figlio F). Una volta fatto ciò i processi F e N effettuano una richiesta di connessione a VFR_RX (F) una richiesta di connessione a VFR_TX (N). A questo punto F conteggia gli errori tramite un ciclo in cui incremento un indice, fratto ciò invio a VFR_RX il conteggio degli errori. A questo punto il processo F va in wait (attende la fine del processo N). Il processo N intanto fa una recive e riceve i caratteri. Una volta trasformati fa una exit e passa al padre (F) i caratteri ricevuti. A questo punto F invia ogni singolo carattere a VRF_RX e fa una exit restituendo il controllo al processo P. P chiude le connessioni.

Secondo voi come schema logico è corretto? Qualche errore? Avete suggerimenti? Ora sto scrivendo il codice, più tardi ve lo posto. Grazie a tutti coloro che riusciranno a darmi una mano!