Ja zrobilem cos takiego:
Kod:
#include <winsock2.h>
#define PORT 80
std::string download( char address[512], char packet[1024] ) {
struct sockaddr_in http;
http.sin_addr.s_addr = inet_addr(address);
http.sin_port = htons( PORT );
http.sin_family = AF_INET;
WSADATA w_data;
WSAStartup( MAKEWORD( 2,0 ), &w_data );
SOCKET sock;
sock = socket( AF_INET, SOCK_STREAM, 0 );
connect( sock, ( struct sockaddr* )&http, sizeof( struct sockaddr_in ) );
char r_data[1024];
send( sock, packet, strlen( packet ), 0 );
int ret;
std::string odczyt;
while( ret = recv( sock, r_data, sizeof( r_data ), 0 ) != 0 ) {
odczyt=odczyt + r_data;
}
WSACleanup();
return odczyt;
}
WSACleanup(); <- z tym miałem niezły ubaw, zużycie pamięci co połączenie wzrastało o 4k chyba po godzinie skapłem się że to właśnie przez brak tej linijki.
do tego jeszcze taki kodzik:
Kod:
string ruch_gracza(string r) {
string adres = "127.0.0.1";
string pakiet = "GET /index.php?a=abc&b=123"\r\n"
"Host: www.mojastrona.pl\r\n"
"User-Agent: Mozilla/4.0\r\n";
char address[512];
strcpy( address, adres.c_str() );
char packet[1024];
strcpy( packet, pakiet.c_str() );
string odp= download(address,packet);
return odp;
};
Mam tylko problem przy połączeniu z sub domeną. i nie bardzo wiem jak wyciągnąć ip z nazwy hosta. Z tym drugim sobie chyba poradzę jak po gogluje. Ale na subdomene nie mam żadnego pomysłu.