- Kod: Zaznacz cały
#include <windows.h>
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
struct sockaddr_in addr;
struct hostent *hostEnt;
int port;
WORD wersja;
WSADATA WsaData;
SOCKET socketMoj;
char* hostname = new char[255],
* page = new char[255],
* protokol = new char[64];
string tresc;
char odp[20000] = {'\0'};
cout <<"Podaj tresc zapytania:\n";
cin.getline(page, 255);
cout <<"Podaj nazwe hosta:\n";
cin.getline(hostname, 255);
cout <<"Podaj port:\n";
cin >> port;
char r = '\r';
char n = '\n';
for(unsigned int i = 0 ; i <= strlen(page) ; ++i )
{
if( page[i] == ',' )
page[i] = r;
if( page[i] == ';' )
page[i] = n;
}
tresc += page;
system("CLS");
wersja = MAKEWORD(2, 0);
if (WSAStartup(wersja, &WsaData)) {
cout << "Blad inicjalizacji WinSock2\n";
_getch();
return 0;
}
if (!(hostEnt = gethostbyname(hostname))) {
cout << "Nie znaleziono hosta.\n";
_getch();
return 0;
}
addr.sin_family = AF_INET;
addr.sin_port = htons(port);
addr.sin_addr.s_addr = *((unsigned long*)hostEnt->h_addr);
socketMoj = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
connect(socketMoj, (struct sockaddr*)&addr, sizeof(addr));
send(socketMoj, tresc.c_str(), 4, 0);
cout << "Wyslano do "<< inet_ntoa(addr.sin_addr) <<" :\r\n" << tresc.c_str() << "\r\n\r\n";
cout << "Czekam na odpowiedz..." << endl;
recv(socketMoj, odp, sizeof(odp), 0);
cout << "Oto odpowiedz: \n" << odp;
closesocket(socketMoj);
WSACleanup();
delete hostname;
delete protokol;
delete page;
_getch();
return 0;
}
Ale dostaje pustke w odpowiedziGET / HTTP/1.1,;Host: http://www.google.com,;,;
Pozdro
EDIT:
Postanowiłem zmienić troche kod tak aby wysyłał on konkretne zapytanie... Teraz wyglada on tak:
- Kod: Zaznacz cały
#include <windows.h>
#include <iostream>
#include <conio.h>
#pragma comment(lib, "ws2_32.lib")
#define PORT 80
#define HOST "www.fotka.pl"
using namespace std;
int main(int argc, char **argv)
{
cout <<"Trwa inicjalizacja zmiennych..."<<'\n';
struct sockaddr_in addr;
struct hostent *he;
WORD RequiredVersion;
WSADATA WData;
SOCKET s;
char tresc[] = "GET / HTTP/1.1\r\n"
"Host: www.fotka.pl\r\n"
"User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)\r\n"
"Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,t ext/plain;q=0.8,image/png,*/*;q=0.5\r\n"
"Accept-Language: pl\r\n"
"Accept-Encoding: gzip,deflate\r\n"
"Accept-Charset: ISO-8859-2,utf-8;q=0.7,*;q=0.7\r\n"
"Keep-Alive: 300\r\n"
"Connection: keep-alive\r\n\r\n";
char odp[200000] = {'\0'};
cout <<"Inicjalizacja zmiennych zakonczona..."<<'\n';
cout <<"Trwa inicjalizacja WinSock2..."<<'\n';
RequiredVersion = MAKEWORD(2, 0);
if (WSAStartup(RequiredVersion, &WData))
{
cout <<"Blad inicjalizacji WinSock2\n";
_getch();
return 0;
}
cout <<"Inicjalizacja WinSock2 zakonczona..."<<'\n';
cout <<"Trwa znajdowanie hosta..."<<'\n';
if (!(he = gethostbyname(HOST)))
{
cout <<"Nie znaleziono hosta.\n";
_getch();
return 0;
}
cout <<"Znaleziono hosta pomyslnie..."<<'\n';
cout <<"Trwa wypelnianie struktury..."<<'\n';
addr.sin_family = AF_INET;
addr.sin_port = htons(PORT);
addr.sin_addr.s_addr = *( (unsigned long*)he -> h_addr);
cout <<"Wypelnianie struktury skonczone..."<<'\n';
cout <<"Trwa tworzenie socketa..."<<'\n';
s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
cout <<"Tworzenie socketa skonczone..."<<'\n';
cout <<"Trwa poloczanie..."<<'\n';
connect(s, (struct sockaddr*) &addr, sizeof(addr));
cout <<"Poloczono..."<<'\n';
system("CLS");
send(s, tresc, sizeof(tresc), 0);
cout << "Wyslano: " << tresc << " do " << inet_ntoa(addr.sin_addr) << "..." << endl;
cout << "Czekam na odpowiedz..." << endl;
int numer = 1;
while(!kbhit())
{
recv(s, odp, sizeof(odp), 0);
cout << odp ;
memset(odp, '\0', sizeof(odp));
cout <<"\n\nKoniec pakietu numer: "<<numer<<" Buf teraz rowna sie = \""<<odp<<"\"\n\n";
++numer;
}
cout <<"Zakonczono."<<'\n';
WSACleanup();
system("CLS");
getch();
return 0;
}
Czy ten pakiet jest zaszyfrowany czy może musze coś zrobić ? Interesuje mnie też, co zrobić z tą linijką:HTTP/1.1 200 OK
Date: Sun, 07 Dec 2008 08:55:34 GMT
Server: Apache
Keep-Alive: timeout=45
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html; charset=utf-8
Set-Cookie: cresist=AC15009F00000050; path=/
Content-Encoding: gzip
2324
‹;44|¸ŃC†€!ĹýGučYfňĂŹFßę<…ÄQşą±N˛x
Vůęá@›ĂK–5Q˘ŰzLäžC*í¨×ýřRŢČÖD0řl˝éăđµwş{ŇÝJ¦ôtłG˛mNŚ]bWwV˛gţLÜ©zČrɸғĎČJě
yÍśŐe‹ÁnM`‹šuC>ťYď¬!ăK®ĚGX"śĚ%ťŇ˛€‘¤©{ľtußk‚Dh–i~ŻD«Ű'EęđŘ]ůŢ'FĄbyž©vň›-Ëźě©ëúÉ ‚łBŤrFŁŔ_9>lL[ÚĆł—ëFŘßű1…¸żęÇh )ĚÓg<nfl-ů÷Üz0ôÎ~L}…Ľ?,š–¤cůĎß~Mý?ˇ°MÓ‚cńŹŻľ¦ňcÂ?†Kł±řçoż¦ţëëëC
n—ţăňóř
Ż
ľć-~’ńÓ7č^|MŐ?Dá6Á!Á‡0'ݵ›ÚĆ‹÷˙éW0˙]w(łJ@˱őoľ¦÷)ď8ţX÷Ă›Ż©;mĘk4Ý=ţŻVÜ˙śysÜfAq¤ÚFMîn#| R&AęôĚş!ü)¨ I )öJŃPhÝ“UË,®×´7*Ý•ďŐŔ¤$ÎM°Bjd´, üfËúŹyZ•$/Sbů®76óĺűŻÉÁŹ˙čîÁî=V˙đć‹î]ÓBŽÓ7Ö®ń5U猇deĺ
·Ţ|MÝeŰd„,Ťe/ľ¦ęŰó‚ŕbă±ř—ďżć˘F \‘ĆúźŢ}Qj
]BJJmÓôß çeÁ׼EÁ[ś±eßzăOᆭöçX˘Ť—mk,ţŮË˙jőýĎ™7ÇmGA¦mÔäî6— »»˝˙ť¨mÚ\uY7ę~ňî')Ţ™:άw@Č8Â<ĐL)SZ0"yüř˝€=|Ż I Y¦ů˝šěصH^„Äy Q|!4p5|¬xĽ[bËŹLµ–/lu4±7rx™łşl1@M™Vĺ%9ŚWŮş!ßżţs˘A)Š-<&ů˘Ô¸ę×Ďďň\ţĆĚ3tŚN™Á1Dťőű}0+ÖD`Yî’cyKŹ×MM‰ĚQ•@ŔQµ)Ńu˝¨J,ź;~^łůŻđ^řiÎPKň¬ťýűú9/űý“ŽBÁxŰHݧđţ†Ý˙Nüď쮼2 *ĂTvý÷ö}%<"wßb°…`¶ĺǧ^čh%üń±ć˛‚řŮXÄqI`Ů‚×5ě%gůe?.1Ęa
2†@ÔV5„đßÓŘń_‘XČSă<’ĆPÎĘś` Ŕ_w·éô†/ű¶R*+%˙ŕDšť2©čťć¶Ż,?¸˙
%dÓű`9˛î†J>ßIĆőT‘ŃLŽ\rlyźCÖćđţW§!ö%č‡rŰłćţ7čtٲňý°R,4“#——] ňˇä*šćŘ1%T?#ţîoňI`äDGšüS±i»lkY&ÝŐ”éä˘:žâá§š0'ÓŞ¬%ĄŞ•/3ťĽ ł˘6â`D§Ó±–ݡŠC4yÁeÇ‘ń HY
Á ŁÓĽŮ¶-Ó–ĄFÉű+ë.ŻH×Ti9GmÔJŕîő6]Órd¶GU
ďoŢŮĎ5e¸G}ÇÉu–ÝĄgexŇq×6,G÷7UQNV-»+ŇĄcČsJH㩺%{顮–wĹ`WÂ5
Şoą}ő;a[K+®ÜŤc–Á
đ°•ćăčŹl×ěŽđjz圥ei÷q%“ú¤<ŮćRygY7mˇ»,Ó>Ľla=ÉŹ˝¬<<a¨%ĄÚ_p˙ëôîŰ;DX˛Żô焳HŐOöő䫲ß˙FN¦çŻ,›rOîoú~ÓL,KĚOaĘ
O"ľ˛Ľ"›ťÂŚÝ˙ĆÝŻMň°lzŞJćĹ#ňîŞĘ+ś"™W™ľż†¶i©ëžĆ˛ĺäVŰ–ŮLY;
':Ί)ą˙–Ý˙ÎôXÇ6eGY%r®ĺ›Ë]ŻßýMt˙[“\ů¶*úőš śD“#ĺ=•{÷ż
§WČ1W$˘÷żÍž—%¦83ë†@ň'É‹J
HelpSet-Cookie: cresist=AC15008300000050; path=/
EDIT2:
Problem rozwiązany
I odesłał mi źródło strony konta xxxGET /profil/xxx HTTP:/1.1\r\nHost: http://www.fotka.pl:80\r\n\r\n


