Просмотр полной версии : Генерация 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
И чтобы он в какую-ниб. переменную ответ сервера записал
http://antichat.ru/inetcrack/
JazzzSummerMan
24.12.2005, 09:39
мэднет ну трините вроде как нужно знать как написать)
Алгол помню хотел написать такую статью по программированию чтобы работать с заголовками, расхотел наверно
Вот (http://www.codeguru.com/cpp/i-n/internet/http/article.php/c8813/) статья с примером
А вот тут (http://www.codeguru.com/cpp/i-n/internet/) и тут (http://www.codeproject.com/internet/#HTTP+%2F+HTTPS) можно еще найти
boost.orgНерезус нафига использовать буст то? Можно погемороится с winsock что я собственна щас и делаю))
нафига использовать буст то? считаешь себя умнее профессиональных с++ кодеров?
Можно погемороится с winsock
а на линухе есть винсок?
Вот мизерный пример отправки 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 запрос
Я знаю что это не лутший способ чтения ответа сервера но для примера пойдет...
Если нужна будет помощь пиши на мыло.
а на линухе есть винсок?Вроде да.
считаешь себя умнее профессиональных с++ кодеров?Свой велосипед всегда удобнее...
Вроде да. вдумайся: WinSock. Win. Windoze.
Сокеты,хм,вдумайся на основе беркли,хм беркли - *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 версии) можно переделать под никсы с мельчайшими изменениями...
дай мне такой код, и я поверю. А пока - не верю.
дай мне такой код, и я поверю. А пока - не верю.Мне все равно веришь или нет =)
начнем с того что в Windows нужна closesocket() а в unix - close()
в винде - WSAStartup(), WSACleanup(), в unix-не нужно
причем в винде это API ф-ия а в Unix- syscall
дык ребят в никсах функции для работы с сетью ДАЖЕ в передаваемых параметрах не сильно отличаются от тех что в винсок - ибо билл хотел сделать все свое но так и не решился ;) так что явных отличий там нет...
2kez кажись в юнисе иницилизировать даже не нужно ;)
---
зы на правильность не проверял но кажись Snk привел отличный пример для виндоус...
начнем с того что в Windows нужна closesocket() а в unix - close()
в винде - WSAStartup(), WSACleanup(), в unix-не нужно+отличия названия\путей хидеров + в никсах используются только write read в винде send recv
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot