Steve46
23-04-2010, 13:25
Ciao a tutti, ho allegato un file che va rinominato in .c ed è un programma C server web. Vi chiedo un aiuto, questo è il testo dell'esercizio che devo fare : L’esercizio consiste nello sviluppare, sulla base delle specifiche sotto riportate, una applicazione server in grado di rispondere alle richieste per il download di pagine Web provenienti da generici client HTTP (es. browser Web).
L’applicazione riceve da riga di comando (mediante argc e argv[]) l’indirizzo IP e la porta sui quali il server Web, una volta avviato, dovrà rimanere in ascolto (ad esempio, rispettivamente, 127.0.0.1 e 8080).
Alla ricezione di un messaggio di richiesta HTTP di tipo GET riportante il percorso della pagina Web che il client intende scaricare, l’applicazione server dovrà predisporre un opportuno messaggio di risposta contenente, oltre alle necessarie righe di intestazione HTTP, la risorsa richiesta (appositamente letta da file). Nel seguito è riportato, a titolo di esempio, un ipotetico messaggio di richiesta HTTP che potrebbe essere ricevuto dal server.
GET /pagina.html HTTP/1.1
Host: 127.0.0.1:8080
Connection: close
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US)
Accept: application/xml,text/html,text/plain,image/png,*/*
Accept-Encoding: gzip,deflate,sdch
Accept-Language: it-IT,it;q=0.8,en-US;q=0.6,en;q=0.4
If-Modified-Since: Tue, 30 Mar 2010 05:57:19 GMT
Nel generare, a partire dalla specifica richiesta, il messaggio di risposta sarà necessario considerare che, per essere compreso dai client, questo dovrà contenere – prima della risorsa richiesta – almeno le tre righe di intestazione HTTP riportate di seguito (dove il ritorno a capo è ottenuto mediante \r\n, la riga vuota è ottenuta attraverso \r\n\r\n ed il campo Content-Length: corrisponde alla dimensione effettiva della specifica risorsa).
HTTP/1.1 200 OK
Content-Length: 666
Content-Type: text/html
<HTML>
...
</HTML>
L’applicazione dovrà gestire in modo adeguato eventuali situazioni di errore (es. risorsa non trovata), procedendo all’invio di opportuni messaggi di errore al client (es. codice 404).
Nota: nello sviluppo della applicazione si consiglia di partire dal file tcpserver.c analizzato a lezione, modificandolo opportunamente per aggiungere le parti specifiche relative alla gestione del lato server del protocollo HTTP, alla lettura da file, ecc. L’applicazione verrà valutata avviando il server (utilizzando come parametri rispettivamente 127.0.0.1 e 8080) e provando a scaricare mediante un browser Web (ad esempio Mozilla Firefox) la pagina sviluppata nell’Esercizio 3.1 (pagina.html). A tal fine, la pagina in questione dovrà essere stata precedentemente salvata nella stessa cartella dell’eseguibile dell’applicazione server.
Bastano poche modifiche ma non so quali, quindi mi rivolgo a voi. La pagina.html già ce l'ho, mi serve solo modificare il webserver, in particolare va modificato dove tra i commenti a destra c'è scritto "si converte la stringa in maiuscolo"...quelle due righe vanno eliminate e bisogna mettere la parte da aggiungere. Sareste davvero gentilissimi, perchè entro stasera devo consegnare il lavoro. Grazie a tutti anticipatamente!!
L’applicazione riceve da riga di comando (mediante argc e argv[]) l’indirizzo IP e la porta sui quali il server Web, una volta avviato, dovrà rimanere in ascolto (ad esempio, rispettivamente, 127.0.0.1 e 8080).
Alla ricezione di un messaggio di richiesta HTTP di tipo GET riportante il percorso della pagina Web che il client intende scaricare, l’applicazione server dovrà predisporre un opportuno messaggio di risposta contenente, oltre alle necessarie righe di intestazione HTTP, la risorsa richiesta (appositamente letta da file). Nel seguito è riportato, a titolo di esempio, un ipotetico messaggio di richiesta HTTP che potrebbe essere ricevuto dal server.
GET /pagina.html HTTP/1.1
Host: 127.0.0.1:8080
Connection: close
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US)
Accept: application/xml,text/html,text/plain,image/png,*/*
Accept-Encoding: gzip,deflate,sdch
Accept-Language: it-IT,it;q=0.8,en-US;q=0.6,en;q=0.4
If-Modified-Since: Tue, 30 Mar 2010 05:57:19 GMT
Nel generare, a partire dalla specifica richiesta, il messaggio di risposta sarà necessario considerare che, per essere compreso dai client, questo dovrà contenere – prima della risorsa richiesta – almeno le tre righe di intestazione HTTP riportate di seguito (dove il ritorno a capo è ottenuto mediante \r\n, la riga vuota è ottenuta attraverso \r\n\r\n ed il campo Content-Length: corrisponde alla dimensione effettiva della specifica risorsa).
HTTP/1.1 200 OK
Content-Length: 666
Content-Type: text/html
<HTML>
...
</HTML>
L’applicazione dovrà gestire in modo adeguato eventuali situazioni di errore (es. risorsa non trovata), procedendo all’invio di opportuni messaggi di errore al client (es. codice 404).
Nota: nello sviluppo della applicazione si consiglia di partire dal file tcpserver.c analizzato a lezione, modificandolo opportunamente per aggiungere le parti specifiche relative alla gestione del lato server del protocollo HTTP, alla lettura da file, ecc. L’applicazione verrà valutata avviando il server (utilizzando come parametri rispettivamente 127.0.0.1 e 8080) e provando a scaricare mediante un browser Web (ad esempio Mozilla Firefox) la pagina sviluppata nell’Esercizio 3.1 (pagina.html). A tal fine, la pagina in questione dovrà essere stata precedentemente salvata nella stessa cartella dell’eseguibile dell’applicazione server.
Bastano poche modifiche ma non so quali, quindi mi rivolgo a voi. La pagina.html già ce l'ho, mi serve solo modificare il webserver, in particolare va modificato dove tra i commenti a destra c'è scritto "si converte la stringa in maiuscolo"...quelle due righe vanno eliminate e bisogna mettere la parte da aggiungere. Sareste davvero gentilissimi, perchè entro stasera devo consegnare il lavoro. Grazie a tutti anticipatamente!!