PDA

Visualizza versione completa : bacheca elettronica in c


Nanri
26-09-2004, 11.04.44
ragazzi mi servirebbero delle dritte cominciare a lavorare questo progetto sotto windows. Non so da dove cominciare. Ecco la specifica:
"Realizzazione di una bacheca elettronica residente su file. Una
bacheca elettronica e' un servizio che permette ad ogni utente del
sistema di inviare messaggi che possono essere letti da un qualsiasi utente
del sistema interessato a consultare la bacheca stessa. In questo caso
la bacheca e' gestita da un processo server concorrente in tecnologia
multithread che accetta e processa le richieste dei client.

Il software del client deve fornire ad un utente interattivo
un menu' con le seguenti funzioni:

1. Lettura di tutti i messaggi sulla bacheca elettronica.
2. Deposito di un nuovo messaggio sulla bacheca elettronica.
3. Rimozione di un qualsiasi messaggio dalla bacheca elettronica.

Un messaggio deve contenere almeno i campi Oggetto e Testo. La
comunicazione tra client e server deve sfruttare i mailslot. Si precisa che lo studente e' tenuto a realizzare sia il
software del client che il software del server."

P8257 WebMaster
27-09-2004, 09.20.11
Di cosa hai bisogno specificamente?
Vuoi un'analisi? .. una traccia? .. hai già scritto qualcosa? .. a che livello sei nello studio del linguaggio? .. conosci le basi della programmazione concorrente?

Bye :cool:

Nanri
27-09-2004, 11.23.12
mi servirebbe una schematizzazione.. per iniziare.. conosco java alla perfezione quindi il problema sono le system call.. e non ho capito assolutamente cosa si intende per programmazione concorrente e come implementare il lato server e quello client: devono essere in due file diversi? o devono essere funzioni dello stesso codice?

P8257 WebMaster
27-09-2004, 11.46.43
Praticamente ti serve una bozza di analisi:

La specifica va realizzata in due entità separate (client e server) perché, pur essendo possibile realizzarle in un'unica entità, sarebbe poco efficiente dal punto di vista funzionale.

Quindi, 2 eseguibili separati per il processo server e per il processo client.

Il processo server deve implementare un thread che gestisca un pool di 'n' connessioni client.. Quando il thread viene sollevato dal processo server, resta in attesa finché non riceve notifica di connessione. Ogni partecipante al pool di connessione può operare in maniera asincrona sul thread con un limite fissato dal programmatore.

Ogni transazione avviene tramite un messaggio formattato "mail shot".

Il client deve rilevare la presenza di almeno un thread server mediante un messaggio di verifica.
Il server è privo di interfaccia funzionale quindi il client deve provvedere a fornire al server i dati formattati in maniera corretta per la transazione.
Qualsiasi controllo sui campi, sulla digitazione deve essere svolto tramite client.

Infine, ad ogni transazione il client deve rilevare lo stato della medesima attraverso una specifica procedura in stile "GetLastError" implementata sul server.

Questo è solo un piccolo approfondimento sulla specifica nel modo in cui personalmente realizzerei questa architettura. Implementarlo in C è un po' laborioso ma interessante e stimolante poiché il C non dispone "nativamente" della gestione dei Thread e dei pool.
Potresti concentrarti (per non perdere del tempo) sull'implementazione del client e delle funzioni di gestione dell'input e dell'output utilizzando chiamate dummy che saranno poi sostituite dalle transazioni col server una volta che queste saranno implementate.

Bye :cool:

Nanri
27-09-2004, 11.50.38
perfetto! grazie mille! proprio quello di cui avevo bisogno! la settimana prox tornerò a lavorarci e penso di disturbarti ancora.. grazie mille!