Logowanie do serwera GG w C++

Nerin

Użytkownik
Dołączył
Luty 10, 2012
Posty
2
Na stronie http://toxygen.net/libgadu/ trafiłem na biblioteki i dokumentację transmisji plików gadu-gadu.

Fragment dokumentacji:

1.2. Zanim się połączymy

Żeby wiedzieć, z jakim serwerem mamy się połączyć, należy za pomocą HTTP połączyć się z appmsg.gadu-gadu.pl i wysłać:

GET /appsvc/appmsg_ver8.asp?fmnumber=NUMER&fmt=FORMAT&lastmsg=WIADOMOŚĆ&version=WERSJA HTTP/1.1
Connection: Keep-Alive
Host: appmsg.gadu-gadu.pl

Gdzie:
NUMER jest numerem Gadu-Gadu.
WERSJA jest wersją klienta w postaci „A.B.C.D” (na przykład „8.0.0.7669”).
FORMAT określa czy wiadomość systemowa będzie przesyłana czystym tekstem (brak zmiennej „fmt”) czy w HTMLu (wartość „2”).
WIADOMOŚĆ jest numerem ostatnio otrzymanej wiadomości systemowej.

I teraz pytanie: Jak w C++ realizować połączenia HTTP, oraz za pomocą jakiego programu można wysyłać takie zapytania ręcznie. Z góry dziękuje za odpowiedź.
 

grzonu

Były Moderator
Dołączył
Grudzień 26, 2006
Posty
1390
winsock albo wininet
 

Nerin

Użytkownik
Dołączył
Luty 10, 2012
Posty
2
Dokopałem się do książki "Programowanie sieciowe Microsoft Windows" i tam jest wszystko, a nawet więcej. Temat można zamknąć.
 

Czepek221

Użytkownik
Dołączył
Maj 18, 2010
Posty
26
Dokopałem się do książki "Programowanie sieciowe Microsoft Windows" i tam jest wszystko, a nawet więcej. Temat można zamknąć.

Osobiście zacząłem korzystać z boost::asio.

Kod:
#include <iostream>
#include <boost/array.hpp>
#include <boost/asio.hpp>

using boost::asio::ip::tcp;

std::size_t completion(const boost::system::error_code& error, std::size_t bytes_transfered)
{
    return ! error;
}

int main(int argc, char* argv[])
{
    boost::asio::io_service io_service;
    boost::asio::ip::address addr = boost::asio::ip::address::from_string("91.197.13.211");
    boost::asio::ip::tcp::endpoint endpoint(addr, 80);
    tcp::socket socket(io_service);
    socket.connect(endpoint);
    boost::asio::streambuf request;
    std::ostream requestStream(&request);
    requestStream << "GET /appsvc/appmsg_ver8.asp?fmnumber=12345678&lastmsg=''&version='8.0.0.7669' HTTP/1.1\r\n"
                  << "Connection: Keep-Alive\r\n"
                  << "Host: appmsg.gadu-gadu.pl\r\n\r\n";

    boost::asio::write(socket, request);
    boost::asio::streambuf respond;
    boost::system::error_code ec;
    boost::asio::read(socket, respond, completion, ec);
    std::cout << &respond << std::endl;
    getchar();
    return 0;
}

Pozdrawiam, Czepek!
 
Do góry Bottom