Newsgroup: it.comp.programmare.win32
Titolo: Richiedere pagina HTTP

Ciao a tutti, sto creando un progetto client che deve richiedere una
pagina da un sito utilizzando il codice HTTP (per prova utilizzerò
google). Bene in linea teorica dovrei creare un socket client,
impostarlo con l'indirizzo uscente di google su porta 80 e tramite la
send inviare una stringa simile a questa: "GET /index.html HTTP/1.1".
SOCKET sClientHTTP;
WSADATA wsaDataHttp;
SOCKADDR_IN RemoteAddrHttp;
...
nRet=WSAStartup(MAKEWORD(1, 1), &wsaDataHttp);
sClientHttp = socket(AF_INET, SOCK_STREAM, 0);
lMsgs=FD_READ | FD_WRITE | FD_CONNECT | FD_CLOSE;
nRet=WSAAsyncSelect(sClientHttp, ghwndApp, WM_USER_NET, lMsgs);
RemoteAddrHttp.sin_family=PF_INET;
// Indirizzo IP di Google
RemoteAddrHttp.sin_addr.s_addr=inet_addr("66.249.93.104");
RemoteAddrHttp.sin_port=htons(80);
nRet=connect(sClientHttp, (PSOCKADDR)&RemoteAddrHttp, AddrLen);
send(sClientHttp, "GET /index.html HTTP/1.1", lstrlen("GET /index.html
HTTP/1.1")+1,0);
Bene invio questa richiesta e tutto sembra andare in modo corretto..Per
prova ho creato un socket server, messo in ascolto su porta 80 ma dopo
che si è inviata la richiesta non viene ricevuta la risposta (dove
invece dovrebbe riceve il codice HTML della pagina web di google).
Avete qualke indicazione sul problema?

 Avete qualke indicazione sul problema?
non ti fidare che la pagina principale di un sito si chiami index.html;
per fare delle prove usa telnet.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it


Se provi a fare 
www.google.it/index.html
 compare la home di google
percui dovrebbe chiamarsi così...

> stringa simile a questa: "GET /index.html HTTP/1.1".
Mancano come minimo un paio di CR/LF in fondo credo... prova con 
questo: "GET / HTTP/1.1\r\nHost: 
www.google.it
\r\n\r\n".
Se č cosě che intendi procedere, ti conviene studiare il 
protocollo HTTP prima. Altrimenti, darei un'occhiata a cosa 
offre WinInet, tipo la InternetReadFile.
HTH,
SF. 

drav...@virgilio.it
 scrive:
: Ciao a tutti, sto creando un progetto client che deve richiedere una
: pagina da un sito utilizzando il codice HTTP (per prova utilizzerò
: google). Bene in linea teorica dovrei creare un socket client,
: impostarlo con l'indirizzo uscente di google su porta 80 e tramite la
: send inviare una stringa simile a questa: "GET /index.html HTTP/1.1".
<omissis>
: Bene invio questa richiesta e tutto sembra andare in modo
: corretto.
: Per prova ho creato un socket server, messo in ascolto su
: porta 80 ma dopo che si è inviata la richiesta non viene ricevuta la
: risposta (dove invece dovrebbe riceve il codice HTML della pagina web
: di google). Avete qualke indicazione sul problema?
A cosa serve questo server sulla porta 80? Il server, nel tuo esempio, sta 
sulla macchina che ospita Google.
Comunque il problema e' quasi sicuramente l'omissione degli 'acapo' nel 
comando GET.
susanna

 percui dovrebbe chiamarsi così...
lo so, dicevo in generale; il problema nel caso specifico è sicuramente
ciò che ti hanno già detto - mancanza di CRLF, facendo qualche prova con
telnet te ne saresti accorto ;-)
ora che ho anche dato un'occhiata più approfondita al codice (:P) aggiungo
che non ti conviene usare direttamente l'indirizzo IP di Google, vai sul
classico e usa gethostbyname :)
immagino che quella fosse solo una prova, comunque io suggerisco lo stesso
non si sa mai :P
