Jak w temacie, chciałbym pobrać plik nie tekstowy, np .jpg, .exe, .mp3 , za pomocą tego programu:
#include <winsock2.h>
#include <cstring>
#include <string>
#include <iostream>
#include <fstream>
using namespace std;
u_long resolveHost( const string & host )
{
LPHOSTENT hostEntry = gethostbyname(host.c_str());
if ( !hostEntry )
{
unsigned int addr = inet_addr( host.c_str() );
hostEntry = gethostbyaddr((char *)&addr, 4, AF_INET);
if ( !hostEntry )
{
return 0;
}
}
return *((int*)*hostEntry->h_addr_list);
}
int main(int argc, char* argv[])
{
cout<<"Do jakiej strony sie podlaczyc ?\n>";
string hoscik;
cin>>hoscik;
cout<<"Podaj sciezke do pliku\n>";
string sciezka;
cin>>sciezka;
cout<<"Zapisz jako:\n>";
string nazwa;
cin>>nazwa;
WSADATA wsaData;
SOCKADDR_IN saddr;
SOCKET sock;
string http_req = "GET ";
http_req +=sciezka;
http_req +=" HTTP/1.1\r\n";
http_req +="HOST: ";
http_req +=hoscik;
http_req +="\r\n";
http_req +="User-Agent: Major browser/1.1 (Windows; Windows NT 5.1; pl)\r\n";
http_req +="Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,*/*;q=0.5\r\n";
http_req +="Accept-Language: pl,en-us;q=0.7,en;q=0.3\r\n";
//http_req +="Accept-Encoding: gzip,deflate\r\n";
http_req +="Accept-Charset: ISO-8859-2,utf-8;q=0.7,*;q=0.7\r\n";
http_req +="Keep-Alive: 300\r\n";
http_req +="Connection: keep-alive\r\n";
http_req +="\r\n\r\n";
cout<<"\n";
cout<<http_req;
char index[1024*200] = { 0 };
WSAStartup( MAKEWORD(2,2), &wsaData );
sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
saddr.sin_addr.S_un.S_addr = resolveHost (hoscik.c_str());
saddr.sin_family = AF_INET;
saddr.sin_port = htons(80);
if ( connect(sock, (sockaddr*)&saddr, sizeof(sockaddr)) == SOCKET_ERROR )
{
/* połączenie się nie powiodło */
sock = 0;
cout<<"poloczenie nie powiodlo sie\n";
system("pause");
return 0;
}
send(sock,http_req.c_str(),strlen(http_req.c_str()),0);
recv(sock,index,1024*200,0);
cout << index << endl;
fstream plik;
plik.open(nazwa.c_str() , ios::out);
plik<<index;
plik.close();
closesocket(sock);
WSACleanup();
system("pause");
return 0;
}
ale dostaję przy pobieraniu przykładowego .jpg ( http://strony.aster.pl/senq/blog/120.jpg ) cośtakiego :
˙Ř˙ŕ
o so chodzi ?
sprawdziłem wireshark'iem i obraz "dochodzi" do mojego kompa, ( po wklejeniu hex'ów z wiresharka do notatnika,zapisaniu jako .jpg i uruchomieniu okazało się że jest poprawny )