|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Junior Member
Iscritto dal: May 2006
Messaggi: 21
|
[C/C++]Aiuto progetto!!!!
Ciao a tutti!!!
Sono nuova, ed ho subito una domanda da farvi.... Devo scrivere un programma che prende in ingresso una lista di URL e avvisa quando uno di questi viene aggiornato... la mia domanda è: esiste una funzione che prende in ingresso un url e riesce a leggerne l'header?? Io non sono proprio riuscita a trovare nulla!!! ![]() grazie a tutti coloro che mi aiuteranno!!! ![]() |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Aug 2005
Messaggi: 2755
|
penso che ti basti farti mandare l'html dal webserver, tenere in memoria l'ultima copia e poi confrontare la copia attuale con la precedente
__________________
|
![]() |
![]() |
![]() |
#3 |
Junior Member
Iscritto dal: May 2006
Messaggi: 21
|
Grazie wisher!!!
ti dico cosa avevo in mente di fare.... io pensavo di farmi mandare l'header dell'URL, e confrontare la data data di ultima modifica con quella corrente,,,, (è questo che intendevi tu??) il mio problema è che non so come "farmi mandare l'header"... sarà un problema stupido....ma non ci salto fuori ![]() grazie a tutti...e buona giornata!!!! |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Aug 2005
Messaggi: 2755
|
per ottenere un file da un webserver (cui ti devi essere connesa) devi mandare con una send una stringa composta da
"GET "+nome_file_da_scaricare+" HTTP/1.0\r\n\r\n" poi mettiti in recv e ottieni l'html... se riesci a leggere l'header tanto meglio, altrimenti io ti consigliavo con una soluzione poco elegante di salvare direttamente il file e poi controllare che ogni singolo char del file nuovo sia uguale al char corrispondente del file vecchio
__________________
|
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Aug 2005
Messaggi: 2755
|
ti faccio un esempio in python, spero si capisca, come linguaggio è molto semplice
Codice:
import socket HOST = "www.google.com" PORT = 80 connessione = socket.socket(socket.AF_INET, socket.SOCK_STREAM) connessione.connect((HOST, PORT)) connessione.send("GET / HTTP/1.0 \n\n") data = connessione.recv(1024) msg=data while data!="": data = connessione.recv(1024) msg = msg+data print msg connessione.close() Codice:
HTTP/1.0 302 Found Location: http://www.google.it/ Cache-Control: private Set-Cookie: PREF=ID=00f576cd71567ba6:TM=1147511954:LM=1147511954:S=V5I9Bqd-VpBqDT70; expires=Sun, 17-Jan-2038 19:14:07 GMT; path=/; domain=.google.com Content-Type: text/html Server: GWS/2.1 Content-Length: 218 Date: Sat, 13 May 2006 09:19:14 GMT Connection: Keep-Alive <HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8"> <TITLE>302 Moved</TITLE></HEAD><BODY> <H1>302 Moved</H1> The document has moved <A HREF="http://www.google.it/">here</A>. </BODY></HTML>
__________________
|
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Aug 2005
Messaggi: 2755
|
più precisamente la parte dell'header del trasferimento e i dati a noi utili sono separati dalla sequenza
Codice:
"\r\n\r\n"
__________________
|
![]() |
![]() |
![]() |
#7 |
Junior Member
Iscritto dal: May 2006
Messaggi: 21
|
Grazie mille!!!! Ora provo a buttare giù qualcosa da sola....nel caso ti richiamo!!!!
![]() |
![]() |
![]() |
![]() |
#8 |
Junior Member
Iscritto dal: May 2006
Messaggi: 21
|
Scusa wisher, ma sono ancora qui....e ancora + in crisi!!!
A parte il fatto che le socket in c sono un pò + incasinate che nel tuo esempio, in realtà ho un problema di base: I metodi HTTP!!! Ho notato che con il metodo "GET / HTTP/1.0 \n\n" spesso nell'header che ottengo, non è presente il campo "last-m2odified" (come nel tuo esempio)..così il mio algoritmo è andato a farsi benedire!!! Da quello che ho studiato c sarebbe il meto GET condizionato: "GET / HTTP/1.0 \n\n If-Modified-SInce: data" che dovrebberitornare un codice 304 senza body,nel caso il documento non è stato modificato dalla data che gli ho mandato, ed una risposta normale(come una get semplice) nel caso ci siano state modifiche..... il problema è che ho provato con un pò di siti (con putty) e a volte mi risponde con un codice 304, a volte con un codice 302 che nn so cosa significa, a volte mi da" 200, ok" senza body, a volte "200 con body" e altre volte ancora mi dice che il documento è stato aggiornato anche se ci metto una data "futura"!!!! insomma nn so come interpretare le risposte....e di conseguenza nn so + come impostare il programma!!! qualcuno riesce ad aiutarmi??? sono sull'orlo di una crisi di nervi!!! grazie in anticipo!! |
![]() |
![]() |
![]() |
#9 |
Junior Member
Iscritto dal: May 2006
Messaggi: 21
|
Nessuno ha qualche suggerimento???? please!!!!
sono bloccata!! ![]() ![]() ![]() ![]() |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 02:47.