Salve a tutti,
mi ritrovo ancora qui per chiedere il vostro prezioso aiuto.
Sto cercando di fare un programma di trasferimento file in UDP, implementando il Selective Repeat. So che il TCP sarebbe la soluzione migliore, ma a me serve in UDP.
Ora ho risolto tutti i problemi, tranne quello dei timeout degli ack.
Avevo pensato di usare la select, ma questa è bloccante, quindi ho pensato che mi sarebbe stato utile usarla in polling per fare in modo che il server, prima di inviare un pacchetto, controlli il buffer in entrata. A questo punto per quanto riguarda il timeout ho pensato di usare l'alarm, ma ho letto in giro che usare select insieme ad alarm potrebbe dare problemi. Tra l'altro usando l'alarm non saprei come fare per implementare un timeout per ogni pacchetto inviato della finestra, visto che ogni volta che richiamo la funzione alarm, il timer mi viene resettato.
C'è qualche altra funzione? O un metodo per usare quelle presentate in maniera più funzionale? E' da poco che ho a che fare con la programmazione di rete in C, quindi sono un po' inesperto.
Il linguaggio è il C e la piattaforma è Linux (a dire il vero Mac OSX, ma è uguale).
Grazie in anticipo a tutti.