Progetto universitario di un'applicazione client-server in C.
Il tutto serve per fare in modo che il processo client invii un file da crittografare al server, che restituisce la sua impronta SHA-256 al client richiedente.
Oltre a questo, il server può gestire multiple richieste in contemporanea tramite la creazione
di pthreads fino al raggiungimento di un numero massimo MAX_PTHREADS e gestisce i vari processi
che si mettono in coda tramite un componente System IPC V - FIFO.
- Deve prendere le richieste da una FIFO in memoria
- Deve restituire l'impronta SHA-256 sempre nella stessa FIFO
- Deve istanziare più thread per una elaborazione concorrente
- Deve implementare i monitor per l'accesso ai file
- Guardare la FIFO e schedulare le richieste dai client per grandezza dei file (dal più piccolo al più grande)
- Limitare il numero di thread (fissato)
- Implementa il caching delle coppie
percorso-hashgià completate, in modo da servire più velocemente il client - Gestisce richieste multiple per uno stesso file, processando quindi una sola richiesta e inviando la risposta ad entrambi i client
- Inviare tramite la stessa FIFO del Server il percorso del file da calcolare l'impronta
- Prende il calcolo completato sempre dalla stessa FIFO
Eseguire i comandi:
sudo apt update
sudo apt install libssl-devCopiare questa riga nel file CMakeList.txt:
find_package(OpenSSL REQUIRED)
Prima di tutto, occorre creare una cartella di build all'interno della root del progetto, per cui eseguire i comandi:
mkdir -p build
cd buildA questo punto, occorre generare il Makefile, per cui eseguire questi comandi:
cmake ..
makeA questo punto aprire due terminali, uno per il server e uno per il client ed eseguire questi comandi:
./server # per avviare il server
./client percorso/al/tuo/file # per il client