IPB

Здравствуйте, гость ( Вход | Регистрация )

> Отправка HTTP-запросов через сокеты на C++
Гость_account_*
сообщение Dec 28 2007, 17:45
Сообщение #1





Guests






КОД :
Код
#include "stdio.h"
#include "winsock2.h"
#include "windows.h"
#pragma comment (lib,"wsock32.lib")
main()
{
    /////////////
    //DLL init
    /////////////
    WSADATA wsaData;
    if (WSAStartup(WINSOCK_VERSION, &wsaData))
    {
        MessageBox(NULL,"CAN'T LOAD DLL","ASD",MB_OK);
    }
    //////////////
    //Socket Init
    //////////////
    SOCKET sock;
    sockaddr_in inetAddr;    
    inetAddr.sin_addr.S_un.S_addr=inet_addr("213.24.220.5");
    inetAddr.sin_family=AF_INET;
    inetAddr.sin_port=htons(80);    
    char GET[];="HEAD /HTTP/1.1");    
    FILE *file;file=fopen("recieved.html","w");
    char ANSWER[1024];
    ZeroMemory(ANSWER,1024);
    //MAKING SOCKET
    if(sock=socket(AF_INET,SOCK_STREAM,0))
    {printf("got a good sock\nconnecting now...\n");}
    //CONNECTING
    if(connect(sock,(sockaddr*)&inetAddr,sizeof(inetAddr))==0)
    {printf("connected\n");}
    //SENDING DATA
    if(send(sock,GET,sizeof(GET),0))
    {printf("sending request\n");}
    //RECIEVING DATA
    recv(sock,ANSWER,1024,0);
    //printf("sizeof GET %d\n",sizeof(&GET));
    printf("recieved : %s\n",ANSWER);
    //WRITING A HTML
    fprintf(file,ANSWER);
    fclose(file);

    Sleep(100000);
    
}


ДОЛЖНО ПРИХОДИТЬ примерно следущее :

HTTP/1.1 200 OK
Server: nginx/0.5.10
Date: Fri, 28 Dec 2007 14:43:16 GMT
Content-Type: text/html; charset=windows-1251
Transfer-Encoding: chunked
Connection: keep-alive
X-Powered-By: PHP/4.4.2
Set-Cookie: session_id= path=/

но что работает в проге не так.ПОМОГИТЕ ПЖЛ.
Вернуться к началу страницы
 
+Цитировать сообщение
 
Создать новую тему
Ответов (1 - 3)
Гость_account_*
сообщение Dec 28 2007, 17:50
Сообщение #2





Guests






Упс всмысле вот КОД :

Код
#include "stdio.h"
#include "winsock2.h"
#include "windows.h"
#pragma comment (lib,"wsock32.lib")
main()
{
    /////////////
    //DLL init
    /////////////
    WSADATA wsaData;
    if (WSAStartup(WINSOCK_VERSION, &wsaData))
    {
        MessageBox(NULL,"CAN'T LOAD DLL","ASD",MB_OK);
    }
    //////////////
    //Socket Init
    //////////////
    SOCKET sock;
    sockaddr_in inetAddr;    
    inetAddr.sin_addr.S_un.S_addr=inet_addr("213.24.220.5");
    inetAddr.sin_family=AF_INET;
    inetAddr.sin_port=htons(80);    
    char GET[]="HEAD /HTTP/1.1";    
    FILE *file;file=fopen("recieved.html","w");
    char ANSWER[1024];
    ZeroMemory(ANSWER,1024);
    //MAKING SOCKET
    if(sock=socket(AF_INET,SOCK_STREAM,0))
    {printf("got a good sock\nconnecting now...\n");}
    //CONNECTING
    if(connect(sock,(sockaddr*)&inetAddr,sizeof(inetAddr))==0)
    {printf("connected\n");}
    //SENDING DATA
    if(send(sock,GET,sizeof(GET),0))
    {printf("sending request\n");}
    //RECIEVING DATA
    recv(sock,ANSWER,1024,0);
    //printf("sizeof GET %d\n",sizeof(&GET));
    printf("recieved : %s\n",ANSWER);
    //WRITING A HTML
    fprintf(file,ANSWER);
    fclose(file);

    Sleep(100000);
    
}
Вернуться к началу страницы
 
+Цитировать сообщение
Гость_Smacker_*
сообщение Dec 29 2007, 01:01
Сообщение #3





Guests






Цитата(account @ Dec 28 2007, 17:50) *
char GET[]="HEAD /HTTP/1.1";
Смотри спецификации http запросов.

Для примера можешь воспользоваться таким:
char GET[]="HEAD / HTTP/1.1\r\nHost: 213.24.220.5\r\n\r\n\r\n";
Вернуться к началу страницы
 
+Цитировать сообщение
Гость_account_*
сообщение Dec 29 2007, 02:08
Сообщение #4





Guests






good.gif ПАСИБ
Вернуться к началу страницы
 
+Цитировать сообщение

ОтветитьСоздать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



RSS Текстовая версия Сейчас: 2nd May 2024 - 01:50