Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Peugeot Polygon Concept: ecco il futuro delle utilitarie
Peugeot Polygon Concept: ecco il futuro delle utilitarie
Polygon è la concept car di Peugeot che mostra il futuro delle soluzioni del segmento B: tra design compatti e innovativi affiancati da dimensioni compatte uno scherzo dalla manovrabilità incredibile per le manovre a bassa velocità
Reno16 Pro: il compatto di OPPO punta su fotocamera da 200MP e il nuovo Bubble! La recensione
Reno16 Pro: il compatto di OPPO punta su fotocamera da 200MP e il nuovo Bubble! La recensione
OPPO ha portato in Italia, dal 1° luglio 2026, Reno16 Pro: display AMOLED da 6,32 pollici a 144Hz, tripla fotocamera con sensore principale da 200 megapixel, chip Dimensity 8550 Super e batteria da 6000mAh, al prezzo di lancio di 899 euro. Lo abbiamo provato per due settimane insieme al nuovo accessorio Bubble, per capire se la formula compatta della serie regge ancora di fronte a un listino da 1099 euro
 Hisense 55U7SE: tuttofare e accessibile, il MiniLED per film, sport e gioco
Hisense 55U7SE: tuttofare e accessibile, il MiniLED per film, sport e gioco
MiniLED di fascia media con local dimming a 192 zone, 144 Hz nativi e audio firmato Devialet. La prova strumentale riscontra colori affidabili e gaming reattivo, per un prodotto molto accessibile e convincente. Ma la soundbar aggiuntiva è quasi d'obbligo
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 25-02-2006, 08:07   #1
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3741
Avete mai scritto un web server in C ?

io partendo dagli esempi di questo link: http://unsecure.altervista.org/socket/socket.htm lo sto facendo, e da quel che ho capito, c'è un continuo scambio di GET(dammi questo, dammi quello) del client golosone, verso il server che gentilmente gli spara in bcca quanto richesto

Ma mi ri-chiedevo e lo faccio con esempio pratico; io invio una pagina HTML al client, ed il client mi risponde con questo messaggio:

Codice:
GET /immagine1.jpg HTTP/1.1
Accept: */*
Referer: http://127.0.0.1/
Accept-Language: it
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
Host: 127.0.0.1
Connection: Keep-Alive
di sicuro, penso che non sia necessario fare il parsing dell'intero messaggio ritornatomi dal client per sapere cosa vuole, ma sono quasi certo, che esista una struttura nella quale tale messaggio viene memorizzato(a modi record); quindi chiedo a chi ha già percorso questa strada: ha un nome questa struttura ?

Ultima modifica di misterx : 25-02-2006 alle 08:36.
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 25-02-2006, 08:44   #2
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Solitamente è il contrario... E' il client che guida il trasferimento...

GET /pippo.html -> si risponde inviando il file
GET /pippo.gif -> si risponde inviando il file
GET /pippo.jpg -> si risponde inviando il file
....

Se i contenuti aggiuntivi (immagini ad esempio) della pagina HTML che invii al client ci potrà anche essere una richiesta per questi...ma non sono fatti correlati...ci potrebbe benissimo essere una richiesta solo per i contenuti aggiuntivi e non per la pagina (magari già in cache sul browser)...

Ti consiglio comunque di leggerti la relativa RFC che sicuramente ti semplificherà anche la programmazione... Non stare ad implementare tutto il protocollo insieme, ma procedi a piccoli passi...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 25-02-2006, 08:52   #3
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3741
mi sembrava di aver scritto che è il client che continua a richiedere dati ed il server invia lui qanto richiesto, boh, magari ho scritto in una forma poco capibile.

L'RFC al quale tu ti tiferisci, ti spiega come funziona il protocollo sino al minimo dettaglio, ma non ti da indicazioni sulla programmazione in quanto poi, ognuno se lo implementa nel linguaggio che vuole.
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 25-02-2006, 08:55   #4
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
http://www.faqs.org/rfcs/rfc2616.html
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 25-02-2006, 09:01   #5
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Tu hai scritto questo:
Quote:
Ma mi ri-chiedevo e lo faccio con esempio pratico; io invio una pagina HTML al client, ed il client mi risponde con questo messaggio:
di sicuro, penso che non sia necessario fare il parsing dell'intero messaggio ritornatomi dal client per sapere cosa vuole, ma sono quasi certo, che esista una struttura nella quale tale messaggio viene memorizzato(a modi record);
Il client non ti "ritorna" e non ti "risponde" niente... Quella è una nuova richiesta e come tale va gestita... Non devi considerare quello che c'è stato prima o dopo...
Non c'è una struttura predefinita...semplicemente ogni riga è un header che deve dare informazioni a te...
Quote:
Originariamente inviato da misterx
L'RFC al quale tu ti tiferisci, ti spiega come funziona il protocollo sino al minimo dettaglio, ma non ti da indicazioni sulla programmazione in quanto poi, ognuno se lo implementa nel linguaggio che vuole.
Invece te le da...perchè ti dice tutti i formati...dei metodi di richiesta e degli header !!! E non solo...ti dice come fare il parsing degli header e ti dice anche come comportanti in caso di errore...
Basta implementare quello che ti dice lì è sei (quasi) sicuro che il tuo programma sia corretto...

Ultima modifica di cionci : 25-02-2006 alle 09:04.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 25-02-2006, 09:14   #6
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3741
Quote:
Originariamente inviato da cionci
Tu hai scritto questo:

Il client non ti "ritorna" e non ti "risponde" niente... Quella è una nuova richiesta e come tale va gestita... Non devi considerare quello che c'è stato prima o dopo...
Non c'è una struttura predefinita...semplicemente ogni riga è un header che deve dare informazioni a te...

Invece te le da...perchè ti dice tutti i formati...dei metodi di richiesta e degli header !!! E non solo...ti dice come fare il parsing degli header e ti dice anche come comportanti in caso di errore...
Basta implementare quello che ti dice lì è sei (quasi) sicuro che il tuo programma sia corretto...

ok, ho scritto in una forma poco comprensibile; il mio ritorna aveva il valore che: il client invia messaggi al server con le richieste, vabbè, soprassediamo, non è la forma espositiva che mi interessa

Ad ogni modo, pensavo che il parsing potesse essere evitato. Se già qualcuno ha implementato in qualche modo l'HTTP, fornendomi lumi mi farebbe risparmiare tempo evitandomi di leggere tutto quell'RFC, documento del quale ero già a conoscenza.

Oh, posso essere un pò pigro ?
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 25-02-2006, 09:51   #7
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Il fatto è che l'RFC lo DEVI leggere...altrimenti non puoi implementare un server veramente funzionante...
Anche se ci fosse una libreria che ti risparmia il parsing degli header è pacifico che devi aggiungere le informazioni giuste allo stato della risposta per generare header coerenti con quelli della richiesta... Se non sai quali sono queste informazioni come fai ad andare avanti ?

Il parsing degli header in questo caso è una ca@@ata... Ne hai uno per riga... Basta leggere fino ai ":" e hai il nome della direttiva...quello che resta è il valore... L'unica cosa che devi progettare bene è la struttura dati... Qui ci vedrei bene una bella gerarchia di oggetti

Io ho implementato un server POP3 perfettamente funzionante...e per questo devo dire grazie solo alla RFC...senza non avrei avuto la ben che minima idea di come gestire certe situazioni...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 25-02-2006, 09:55   #8
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Ah...ricorda che, durante lo sviluppo, la maggior parte degli header li puoi anche non considerare !!!

Ad esempio nel caso che hai postato te li puoi ignorare tutti !!!
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 25-02-2006, 10:03   #9
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3741
Quote:
Originariamente inviato da cionci
Il fatto è che l'RFC lo DEVI leggere...altrimenti non puoi implementare un server veramente funzionante...
Anche se ci fosse una libreria che ti risparmia il parsing degli header è pacifico che devi aggiungere le informazioni giuste allo stato della risposta per generare header coerenti con quelli della richiesta... Se non sai quali sono queste informazioni come fai ad andare avanti ?

Il parsing degli header in questo caso è una ca@@ata... Ne hai uno per riga... Basta leggere fino ai ":" e hai il nome della direttiva...quello che resta è il valore... L'unica cosa che devi progettare bene è la struttura dati... Qui ci vedrei bene una bella gerarchia di oggetti

Io ho implementato un server POP3 perfettamente funzionante...e per questo devo dire grazie solo alla RFC...senza non avrei avuto la ben che minima idea di come gestire certe situazioni...

volevo risparmiarmi un pò di fatica
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 25-02-2006, 10:07   #10
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3741
Quote:
Originariamente inviato da cionci
Ah...ricorda che, durante lo sviluppo, la maggior parte degli header li puoi anche non considerare !!!

Ad esempio nel caso che hai postato te li puoi ignorare tutti !!!

avevo provato, ovviamente dal lato server, ad inviare solo codice HTML al client senza alcun header, ma non funzionava.
Stamattina ho eliminato l'header e funziona lo stesso, boh

per intenderci:

Codice:
HTTP/1.0 200 OK
Date: Mon, 28 Jun 2004 10:47:31 GMT
Server: Apache/1.3.29 (Unix) PHP/4.3.4
X-Powered-By: PHP/4.3.4
Vary: Accept-Encoding,Cookie
Cache-Control: private, s-maxage=0, max-age=0, must-revalidate
Content-Language: it
Content-Type: text/html; charset=utf-8
Age: 7673
X-Cache: HIT from wikipedia.org
Connection: close
  
<HTML>
[ ...]

Ultima modifica di misterx : 25-02-2006 alle 10:10.
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 25-02-2006, 10:09   #11
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Ti passo un dispensa di un mio prof...magari ti risulta più semplice da leggere rispetto alla RFC...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 25-02-2006, 10:12   #12
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
http://info.iet.unipi.it/~marco/tia/http.pdf

Ci sono alcune cose "minime" che devono essere contenute nella risposta...come il Content-type e il Content-lenght...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 25-02-2006, 10:18   #13
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3741
Quote:
Originariamente inviato da cionci
http://info.iet.unipi.it/~marco/tia/http.pdf

Ci sono alcune cose "minime" che devono essere contenute nella risposta...come il Content-type e il Content-lenght...

pensa che io ho provato ad omettere le informazioni "minime" da te citate e il protocollo funziona lo stesso; non so fino a che punto però. Il Content-lenght dovrebbe riferisi al "payload"(dati veri e propri) e che dovrebbe coincidere con la dimensione del file che si sta per trasmettere e la sua unità di misura mi è parso di capire che dovrebbe essere il byte.

Ultima modifica di misterx : 25-02-2006 alle 11:29.
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 25-02-2006, 11:55   #14
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originariamente inviato da misterx
pensa che io ho provato ad omettere le informazioni "minime" da te citate e il protocollo funziona lo stesso; non so fino a che punto però. Il Content-lenght dovrebbe riferisi al "payload"(dati veri e propri) e che dovrebbe coincidere con la dimensione del file che si sta per trasmettere e la sua unità di misura mi è parso di capire che dovrebbe essere il byte.
Guarda l'RFC o la mia dispensa ed avrai tutte le tue risposte
cionci è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Peugeot Polygon Concept: ecco il futuro delle utilitarie Peugeot Polygon Concept: ecco il futuro delle ut...
Reno16 Pro: il compatto di OPPO punta su fotocamera da 200MP e il nuovo Bubble! La recensione Reno16 Pro: il compatto di OPPO punta su fotocam...
 Hisense 55U7SE: tuttofare e accessibile, il MiniLED per film, sport e gioco Hisense 55U7SE: tuttofare e accessibile, il Min...
Kindle Scribe Colorsoft: riduce le cornici e diventa a colori, ma il prezzo è alto Kindle Scribe Colorsoft: riduce le cornici e div...
L'IA cambia tutte le regole della sicurezza tra vulnerabilità e sorveglianza. Intervista al CEO di Proofpoint L'IA cambia tutte le regole della sicurezza tra ...
SpaceX Starship: Ship 40 ha eseguito un ...
Redmi Note 17 a un passo dal debutto, ma...
Gli aumenti di prezzo del PS Plus potreb...
Almeno 64 GB di RAM per giocare? Il caso...
Gemini si integrerà con le auto e potrà ...
Addio a OxygenOS di OnePlus e alla Realm...
Intel conferma l'aumento dei prezzi su C...
In vendita Withings BodyFit, molto più d...
Inkterface: Steam Machine ospita un pann...
Stare seduti oltre 30 minuti di fila aum...
A Milano l'Italia ha firmato la sovranit...
Cos'è PeerTube, la piattaforma di...
In 12 articoli TOP c'è il meglio ...
La pirateria è l'unica tutela per...
Roomba Plus 516 Combo in offerta a 479€:...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 03:15.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v