Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   Генерация HTTP запросов на c++ (https://forum.antichat.xyz/showthread.php?t=12091)

Trinity 24.12.2005 03:18

Генерация HTTP запросов на c++
 
Искала, искала и ничего не нашла.. Мож кто знает как
отправить заголовки? Например эти:

POST *** HTTP/1.0
Accept: image/gif */*
Referer: ***
Accept-Language: ru
Content-Type: application/x-www-form-urlencoded
Proxy-Connection: Keep-Alive
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FDM)
Host: ***
Content-Length: **
Pragma: no-cache
Cookie: language=ru

name=asavav&pass1=aaa&pass2=aaa


И чтобы он в какую-ниб. переменную ответ сервера записал

madnet 24.12.2005 03:32

http://antichat.ru/inetcrack/

nerezus 24.12.2005 07:52

boost.org

JazzzSummerMan 24.12.2005 09:39

мэднет ну трините вроде как нужно знать как написать)
Алгол помню хотел написать такую статью по программированию чтобы работать с заголовками, расхотел наверно

Deem3n® 24.12.2005 14:09

Вот статья с примером
А вот тут и тут можно еще найти

qBiN 25.12.2005 11:05

Цитата:

boost.org
Нерезус нафига использовать буст то? Можно погемороится с winsock что я собственна щас и делаю))

nerezus 25.12.2005 11:45

Цитата:

нафига использовать буст то?
считаешь себя умнее профессиональных с++ кодеров?

Цитата:

Можно погемороится с winsock
а на линухе есть винсок?

SNK 25.12.2005 23:43

Простой пример
 
Вот мизерный пример отправки HTTP запроса на C++

Код:

        WSAData wsa;
        SOCKET sock;
        struct sockaddr_in addr;
        char buffer[1024] = "GET http://antichat.ru/cgi-bin/s.jpg?test HTTP/1.0\r\nHost: www.antichat.ru\r\n\r\n";
        struct hostent *host=NULL;
        char shost[255] = "www.antichat.ru";
        HANDLE hEvent;
        if (WSAStartup(MAKEWORD(1, 1), &wsa) != 0)
        {
                AfxMessageBox("Can't load a correct version of WinSock");
                return;
        }

        sock = socket(AF_INET, SOCK_STREAM, IPPROTO_IP);

        if (sock == SOCKET_ERROR)
        {
                AfxMessageBox("Can't load WinSock");
        }

        addr.sin_addr.s_addr = htonl(INADDR_ANY);
        addr.sin_family = AF_INET;
        host = gethostbyname(shost);
        CopyMemory(&addr.sin_addr, host->h_addr_list[0],host->h_length);
        addr.sin_port = htons(80);

        connect(sock, (struct sockaddr *) &addr, sizeof (addr));
        send(sock,buffer,sizeof(buffer),0);
        hEvent = CreateEvent(0,false,true,"");
        WaitForSingleObject(hEvent,2000);
        recv(sock,buffer,1024,0);
        closesocket(sock);
        WSACleanup();
        SetDlgItemText(IDC_EDIT1,buffer);

buffer - HTTP запрос

Я знаю что это не лутший способ чтения ответа сервера но для примера пойдет...
Если нужна будет помощь пиши на мыло.

qBiN 26.12.2005 14:42

Цитата:

а на линухе есть винсок?
Вроде да.
Цитата:

считаешь себя умнее профессиональных с++ кодеров?
Свой велосипед всегда удобнее...

nerezus 26.12.2005 14:54

Цитата:

Вроде да.
вдумайся: WinSock. Win. Windoze.

qBiN 26.12.2005 15:10

Сокеты,хм,вдумайся на основе беркли,хм беркли - *BSD =)
Щас приведу маленький кусок из учебника от "BLACK SUN RESEARCH FACILITY"
Цитата:

the winsock API and in that document I mentioned that the windows Sockets
implementation is based on the Berkeley Sockets idea, therefore socket programming on
systems such as UNIX and Linux, which are also based on the Berkeley API would be quiet
similar. This aids us in porting from platform to platform, making it easy to move whole
programs from UNIX to
То есть код под винсок(1 версии) можно переделать под никсы с мельчайшими изменениями...

nerezus 26.12.2005 15:12

дай мне такой код, и я поверю. А пока - не верю.

qBiN 26.12.2005 15:20

Цитата:

дай мне такой код, и я поверю. А пока - не верю.
Мне все равно веришь или нет =)

KEZ 20.01.2006 19:22

начнем с того что в Windows нужна closesocket() а в unix - close()
в винде - WSAStartup(), WSACleanup(), в unix-не нужно

KEZ 20.01.2006 19:24

причем в винде это API ф-ия а в Unix- syscall

ZaCo 20.01.2006 20:40

дык ребят в никсах функции для работы с сетью ДАЖЕ в передаваемых параметрах не сильно отличаются от тех что в винсок - ибо билл хотел сделать все свое но так и не решился ;) так что явных отличий там нет...
2kez кажись в юнисе иницилизировать даже не нужно ;)
---
зы на правильность не проверял но кажись Snk привел отличный пример для виндоус...

qBiN 21.01.2006 17:22

Цитата:

начнем с того что в Windows нужна closesocket() а в unix - close()
в винде - WSAStartup(), WSACleanup(), в unix-не нужно
+отличия названия\путей хидеров + в никсах используются только write read в винде send recv


Время: 19:00