
Originariamente inviata da
oregon
- iostream.h è un file include e non una libreria ...
- si usa iostream non iostream.h (vecchio)
- VC++ non è "sballato" e non è così "difficile" da usare. Ti evita tanti problemi ... bisogna solo studiare un minimo di più
Infine, usare delle API più "complesse" (come la URLOpenStream) significa avere un po' di esperienza (ad esempio conoscere il concetto di puntatori a funzione, ecc...) e quindi, se non sai come fare, non rimane che scrivere tutto il codice al posto tuo. Che, ribadisco, non è banale e non è da 5 minuti ...
Però puoi studiare e usare questa classe
Classes for Writing HTTP Clients in C++
http://www.codeproject.com/Articles/...P-Clients-in-C
grazie oregon, io avevo trovato questa parte di codice, può essere corretta?
codice:
#include <winsock2.h>
#include <windows.h>
#include <iostream>
#pragma comment(lib,"ws2_32.lib")
using namespace std;
int main ()
{
WSADATA wsaData;
if (WSAStartup(MAKEWORD(2,2), &wsaData) != 0) {
cout << "WSAStartup failed.\n";
system("pause");
return 1;
}
SOCKET Socket=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
struct hostent *host;
host = gethostbyname("www.google.com");
SOCKADDR_IN SockAddr;
SockAddr.sin_port=htons(80);
SockAddr.sin_family=AF_INET;
SockAddr.sin_addr.s_addr = *((unsigned long*)host->h_addr);
cout << "Connecting...\n";
if(connect(Socket,(SOCKADDR*)(&SockAddr),sizeof(SockAddr)) != 0){
cout << "Could not connect";
system("pause");
return 1;
}
cout << "Connected.\n";
send(Socket,"GET / HTTP/1.1\r\nHost: www.google.com\r\nConnection: close\r\n\r\n", strlen("GET / HTTP/1.1\r\nHost: www.google.com\r\nConnection: close\r\n\r\n"),0);
char buffer[10000];
int nDataLength;
while ((nDataLength = recv(Socket,buffer,10000,0)) > 0){
int i = 0;
while (buffer[i] >= 32 || buffer[i] == '\n' || buffer[i] == '\r') {
cout << buffer[i];
i += 1;
}
}
closesocket(Socket);
WSACleanup();
system("pause");
return 0;
}