Completato

Note

Errore

Session expiration Your session is going to expireClick here to extend

Budget

Piccolo progetto <800

Pubblicato il

2012-06-18 13:27:23.0

Cliente

jua***

Questo progetto è scaduto

Pubblica un progetto simile e ricevi velocemente offerte non vincolanti.

Pubblica ora il tuo progetto simile

Descrizione

I. SOCKER

To be submitted by June 27 2012

Develop an application that works like a simple TCP proxy, according to the following specifications.

1. At startup, the TCP proxy reads the following 3 arguments from the command line,

exactly in the order specified here: the port number where the proxy listens to connection requests, the IP address and the port number of the target server, i.e. the TCP server the proxy will connect to.

2. The proxy behaves as a TCP server, listening to the port specified as first argument on the command line.

When a connection has been established with a client, the proxy opens a corresponding connection with the target server and forwards data between the two connections (data coming from the client is forwarded to the target server and vice versa).

3. As soon as one of the connections is closed, a corresponding close must be performed by the proxy on the other corresponding connection.

4. In order to test the proxy, you can use the file-transfer client-server application developed in the Lab: first, start the file-transfer server, then start the proxy passing the IP and port number of the file-transfer server, and finally run the file-transfer client. The file-transfer application should work in the same way with or without the proxy.

5. The proxy must handle concurrent requests from several clients at the same time. There is no limit on the number of clients that can connect simultaneously to the proxy. As a consequence, for testing use any of the file-transfer server applications developed in the Lab that can handle concurrent requests.

6. The proxy application must be robust and must avoid memory leakages.

7. The C files of the proxy must all be included in a single zip archive created with this bash command: zip socket.zip *.c *.h

Do not include the client and server files used to test the proxy, but include all the files that are necessary to compile the proxy application (it is possible to use files from the book by Stevens, but these files need to be included).

Warning: the submission system is automatic. Submission will be closed automatically at the deadline.

Submitting the solutions in the last minutes is strongly discouraged.

Note: submissions will be considered valid only if it is possible to compile the application by running the

following command:

gcc -o socket *.c -lpthread -lm

In case of doubts and questions about this assignment, first check the forum pages in the didattica.polito.it course website to see if somebody else already asked your question, otherwise use the forum (not email to teachers) to post your question so that the answer is available for everybody.

II. WEB PROGRAMMING (in italian)

Si realizzi una versione semplificata di un sito web per la somministrazione di questionari on-line, con le seguenti caratteristiche:

1. Le domande del questionario non sono fisse, ma sono immagazzinate in un data base. Il sistema dovrà essere in grado di somministrare un solo questionario alla volta ad un gruppo di utenti (dove più utenti possono compilare il questionario contemporaneamente). Nel database di prova, caricato da chi vuole fare l’esame, deve essere già presente un questionario di prova, con tutti i tipi di domande previsti. Ciascuna domanda del questionario può essere a risposta multipla (massimo 4 possibili risposte) oppure con risposta a testo libero (massimo 2000 caratteri), e possono essere obbligatorie o facoltative. La mancata risposta ad una domanda obbligatoria impedisce all’utente di proseguire con le operazioni successive del questionario.

2. L’utente deve poter effettuare le seguenti operazioni:

a. Registrarsi presso il sito, scegliendo un nome utente ed una password. Una volta registrato, l’utente può accedere alle pagine del questionario attraverso un protocollo sicuro (usare HTTPS), per compilare il questionario e per accedere alle informazioni già immesse nello stesso.

b. In ogni momento, l’utente ha la possibilità di uscire dalla compilazione del questionario o azzerando, o salvando tutte le risposte già date. Nel primo caso, se l’utente torna a riempire il questionario, le risposte alle varie domande risultano tutte in bianco; nel secondo caso, l’utente che torna a riempire il questionario trova tutte le risposte date in precedenza e salvate, ed avrà la possibilità sia di leggerle che di modificarle. Alla fine della compilazione, l’utente può salvare il modo definitivo il contenuto del questionario, le cui risposte non saranno più modificabili, ma saranno ancora consultabili da parte dell’utente.

c. Dovrà esistere un utente amministratore (le cui credenziali devono essere già presenti nel sistema realizzato), il quale, in modo sicuro, può ottenere varie statistiche relative ai questionari: numero di questionari riempiti (in modo definitivo), numero di questionari iniziati ma non ancora chiusi dagli utenti, numero di risposte facoltative a cui si è risposto (in modo definitivo), numero di selezioni per ciascuna risposta delle domande a risposta multipla.

3. L’autenticazione attraverso username e password deve essere fatta quando richiesta, e rimane valida, se l’utente non ha periodi di inattività superiori a 10 min. Se ciò avviene, le risposte date non vengono salvate e l’utente è costretto a ri-autenticarsi con username e password.

4. L’aspetto generale delle pagine web dovrà contenere: una intestazione nella parte superiore, una barra di navigazione sul lato sinistro con i link per poter effettuare le varie operazioni possibili, ed una parte centrale in cui avviene l’operazione principale.

5. I cookies e Javascript debbono essere abilitati, altrimenti il sito può non funzionare correttamente (avvertire l’utente). I form debbono prevedere messaggi di spiegazione sul significato dei vari campi.

6. Bisogna fare in modo che la visualizzazione sia quanto più possibile uniforme al variare del browser utilizzato