View
214
Download
0
Category
Preview:
Citation preview
1
prorub
Progetto LPS-C 2004-2005
Una rubrica interattiva
2
server
client1
clientN
Struttura complessiva
• Processo server– gestisce una rubrica centralizzata– ogni voce ha (cognome, nome, città, tel, commento)
es:
De Rossi Mario Pisa +39-050789 Casa
Bei Sandra Bari 34778988 Cellulare
3
rubserver
Come funziona
• Attivazione server:– $$ rubserver file_voci attiva un processo server (demone, in background)
che • legge da file_voci la rubrica corrente, controlla il formato e la memorizza in una SD interna• si mette in attesa di richieste dai client
file_voci
4
Formato del databaseUn record per riga• Ogni campo di lunghezza fissa
– Cognome (40 char)– Nome (40 char)– Citta (20 char)– Telefono (20 char)– Commento (20 char)
• Se l’informazione è più corta si completa con blank (padding)• Sono seq di caratteri senza terminatori di stringa (‘\O`)
5
Formato del database De Rossi Mario Pisa +39-050789 Casa
Bei Sandra Bari 34778988 Cellulare
Sono rappresentati come
140 char
MarioDe Rossi 35b32b Pisa 16b +39-050789 10b
Casa 16b
SandraBei 3437b Bari 16b 34778988 12b
Cellulare 11b
6
client
Come funziona (2)
$$ rubclientstampa un messaggio di uso (formato a piacere)
rubclientrubclient -irubclient -qrubclient -d
7
Come funziona (3)
$$ rubclient -iinserisce un record in modo interattivo
(formato fisso nelle specifiche)
8
Come funziona (3.1)
$$ rubclient -iCognome ?
9
Come funziona (3.2)$$ rubclient -iCognome ? Rossi
Nome ? Gino
Citta ? Pisa
Telefono ? 050698787
Commenti ? Ufficio
Vuoi inserire il record:
‘Rossi Gino Pisa 050698787 Ufficio ?’ (OK per confermare)
OK
$$
10
Come funziona (4)
$$ rubclient -d chiavecancella tutti i record del DB che contengono chiave in uno dei campi (es. ossi in Rossi)
11
Come funziona (4.1)
$$ rubclient -d chiaveVuoi cancellare tutti i record che contengono ‘chiave’?
OK
Cancellazione avvenuta
$$
12
Come funziona (5)
$$ rubclient -q chiavemostra tutti i record del DB che contengono chiave
in uno dei campi (es. ossi in Rossi)
13
Come funziona (5.1)
$$ rubclient -q ossiRossi Gino Pisa 050698787 Ufficio
Grossi Mario Napoli 98909 Casa
$$
14
Come funziona (5.2)
$$ rubclient -q hossiNessun record contiene ‘hossi’ .
$$
15
rubserver
rubclient1
rubclientN
Struttura da realizzare
• Programma rubserver
• Programma rubclient
16
rubserverrubclient
Struttura da realizzare: interazioni client server
• I client comunicano con il server con una pipe dal nome fissato – richieste di operazioni, formato di lunghezza fissa (161, vediamo poi perché)
/tmp/clientserver
17
rubserverrubclient
Struttura da realizzare: interazioni client server (2)
• I client creano una pipe dedicata per ricevere i messaggi di risposta del server in /tmp ne comunicano il nome al server assieme alle richieste
/tmp/pipe_ascolto
18
rubserverrubclient -ipid 1234
Struttura da realizzare: interazioni client server (3)
• Esempio di richiesta di aggiunta:1+20+140
/tmp/pipeas1234
MarioDe Rossi 35b32b Pisa 16b +39-050789 10b
Casa 16b
A pipeas1234 10b
/tmp/clientserver
19
rubserverrubclient -ipid 1234
Struttura da realizzare: interazioni client server (4)
• Esempio di risposta del server:1+140
• inserzione OK
/tmp/pipeas1234
OK 139b
/tmp/clientserver
20
rubserverrubclient -qpid 1237
Struttura da realizzare: interazioni client server (5)
• Esempio di query:1+20+140
/tmp/pipeas1237
ossi 136bQ pipeas1237 10b
/tmp/clientserver
21
rubserver rubclient -qpid 1237
Struttura da realizzare: interazioni client server (6)
• Esempio di risposta : due msg 1+140
/tmp/pipeas1237
MarioDe Rossi 35b32b Pisa 16b +39-050789 10b
Casa 16b
A
/tmp/clientserver
STOP 137b
22
Protocollo complessivo client server
• Specificato nel testo del progetto
23
Organizzazione complessiva• Scadenze consegne intermedie
– (+2 ogni consegna corretta in tempo)
Frammento 1: 13/04/2005
Frammento 2: 2/05/2005
Frammento 3 (progetto completo): 4/07/2005
• Almeno 15gg prima– specifiche, software di test, makefile e script per la consegna
• Due esercitazioni dedicate a ogni frammento
24
Come e cosa si deve consegnare
• Esclusivamente usando gli script forniti nel materiale del frammento corrispondente• il README di ogni frammento spiega cosa occorre consegnare• Relazione (solo con il progetto finale)
– strutture dati e principali algoritmi (descrizioni e motivazioni)– struttura complessiva server e client– istruzioni per l’utente
25
Data ultima
• Entro il 10 Febbraio 2006
Recommended