- anno 2020/21
- progetto di marco wang
- il server ci permettere di avviare un server, possiamo modificare due parametri all'avvio: la
porta
e lamodalita'
(ricezione:-r, timestamp client: -t
), non importa l'ordine - per avviare basta scrivere
./server
, se non si passano i parametri verra' avviato con i parametri di default che sono porta: 9000 e modalita': ricezione del server(fifo) - per altre modificare altri parametri meno frequenti e' possibile andare nel file defaultServer.h
- utilizza tre struttura principali per gestire la
coda
, imessaggi
, e iclient
- utilizza N thread per gestire N utenti, un thread per l'invio di messaggi(ed eventuale riordino), un thread per eseguire i comandi
- il client ci permette di avviare un client, possiamo modificare il numero di porta all'avvio
- permette di comunicare con il server utilizzando le socket
- nel main manda i messaggi, e affida ad un thread la ricezione
- permette la compilazione mediante il comando make possiamo ottenere un eseguibile client e un server mediante i comandi
make client
,make server
oppure tutti e due mediante un solo comando:make all
-possiamo pulire i file oggetto conmake clean
- make
- ./server [mode -t,-r] [porta: int]
- ./client [porta: int]
-
-
header
: ci sono i corrispettivi header dei file .cclient.c
: file principale del clientdefaultClient.c
: funzioni ausiliari al client e impostazioni di default
-
header
: ci sono i corrispettivi header dei file .cdefaultServer.h
: header file che contiene le impostazioni di default come porta/modalita' e lunghezza messaggi
server.c
file principale del server dove vengono implementate le funzioni di invio e ricezionedefaultServer.c
funzioni ausiliari al serverstructClient.c
struttura che il server usa per gestire i client, ha una radice e forma una catenastructQueue.c
struttura che il server usa per gestire i messaggi, e' una coda circolare
default.c
: funzioni ausiliare sia al client che al server
-
-
- all : compila tutti i file e genera (client e server)
- client : compila i file della cartella client+ default.c e genera client
- server : compila i file della cartella server+ default.c e genera server
- clean : rimuove i file .o generate nelle varie cartelle
-
logFile
questa cartella verra' create all'avvio del server la prima volta e serve per mantenere i file di log, nelle successive volte verra' creatoc da data/..data
:cartella che contiene i file di log di quel giorno formato YY:MM:DDclients
:contiene tutti i client che si sono conessi in questo giornoclient1.txt
client2.txt
- ....
serverLog.txt
-
ogni giorno che verra' avviato il server si creera' una gerarchia di cartelle a partire da
data
-
- basta avviare il server(./server) e avviare diversi client con la stessa porta!
-
- avviamo il server e almeno due client, dopodiche' inserire il nome nei client inviamo il messaggio!
-
ricezione(fifo)
: basta avviare il server facendo./server -r
, e tutti i messaggi inviato dagli utenti verranno immagazzinati nella coda, e un thread inviera' a seconda dell'ordine di arrivotimestamp
: avviamo il server facendo./server -t
, tutti i messaggi vengono imagazzinati nella coda e il thread restera' N secondi in sleep per permettere l'arrivo di messaggi dopodiche' riordina e avra altri N1 secondi per inviare i messaggi
-
- al primo avvio creera' tre cartelle, sucessivamente solo due una del giorno corrente e all'interno quella dei client