|
Постоянный
Регистрация: 14.05.2006
Сообщений: 334
Провел на форуме: 1543521
Репутация:
272
|
|
http://forum.web-hack.ru/index.php?showtopic=6328
Тебе еще потребуются знание http-протокола. Юзай гугл. Вкратце: сначала посылаешь GET-запрос, затем получаешь в цикле через recv получаешь инфу. Что-то вроде этого:
Код:
char buf_in[10];
int x;
char page_text[50000]; //тут будет храниться все, что получаешь
x=recv(sock,buf_in,sizeof(buf_in)-1,0);
while(x>0)
{
buf_in[x]=0;
lstrcat(page_text,buf_in);
// printf(buf_in);
x=recv(sock,buf_in,sizeof(buf_in)-1,0);
}
Ну и еще пример функции. Я писал ее, чисто чтобы получать код страницы, а не файла. Но суть-то одна и таже. Ты и файл ей получишь.
Код:
char* GETRequest(char* server,char* page)
{
WSADATA sock_info;
int err=WSAStartup(MAKEWORD(2,0),&sock_info);
if(err==SOCKET_ERROR)
{
printf("WSAStartup error");
return 0;
}
int sock;
struct sockaddr_in sa;
struct hostent* h;
char page_text[50000];
char buf_in[10];
char buf_out[500];
int x;
sa.sin_family=AF_INET;
sa.sin_port=htons(80);
h=gethostbyname(server);
memcpy(&sa.sin_addr,h->h_addr_list[0],h->h_length);
sock=socket(AF_INET,SOCK_STREAM,0);
if(connect(sock,(sockaddr*)&sa,sizeof(sa))<0)
{
printf("connect() error");
return 0;
}
lstrcpy(buf_out,"GET "); //Составляем GET-запрос
lstrcat(buf_out,page);
lstrcat(buf_out," HTTP/1.0\r\n");
send(sock,buf_out,lstrlen(buf_out),0);
lstrcpy(buf_out,"Host: izobilnik.ru\r\n");
send(sock,buf_out,lstrlen(buf_out),0);
lstrcpy(buf_out,"Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/xaml+xml, application/vnd.ms-xpsdocument, application/x-ms-xbap, application/x-ms-application, */*\r\n");
send(sock,buf_out,lstrlen(buf_out),0);
lstrcpy(buf_out,"User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)\r\n\r\n"); //заголовок User-Agent:
send(sock,buf_out,lstrlen(buf_out),0);
lstrcpy(page_text,"");
x=recv(sock,buf_in,sizeof(buf_in)-1,0);
while(x>0)
{
buf_in[x]=0;
lstrcat(page_text,buf_in);
// printf(buf_in);
x=recv(sock,buf_in,sizeof(buf_in)-1,0);
}
closesocket(sock);
return page_text;
}
пример использования:
Код:
char p[50000];
lstrcpy(file,GETRequest("izobilnik.ru","/yourfile.zip"));
по идее в p, должен быть ответ от сервера, вместе с файлом. Если файл большой, то увеличь значение в 50000
Последний раз редактировалось je0n; 24.06.2007 в 12:34..
|