Protokół GG

adrian_134

Użytkownik
Dołączył
Styczeń 28, 2007
Posty
39
Witam!

Próbuje napisać prostego klienta gg ale na starcie mam problem otóż, wysyłam pakiet:

Kod:
char pakiet[]= "GET /appsvc/appmsg.asp?fmnumber= HTTP/1.0"
     "Host: appmsg.gadu-gadu.pl"
     "User-Agent: Mozilla/4.7 [en] (Win98; I)"
     "Pragma: no-cache";
    
    send(sSerwerSocket, pakiet, strlen(pakiet), 0);
I otrzymuje Bad request. No ok korzystam z innego tutoriala i wysyłam coś takiego
Kod:
    char pakiet[] = "GET /appsvc/appmsg_ver8.asp?fmnumber=20678549&fmt=fmt&lastmsg=0&version=8.0.0.7669 HTTP/1.1"
                    "Connection: Keep-Alive"
                    "Host: appmsg.gadu-gadu.pl";
No ale odpowiedz jest taka sama...
 

hxv

Były Moderator
Dołączył
Sierpień 9, 2006
Posty
797
Zdaje się, że w protokole HTTP każda linia musi być zakończona \r\n a na końcu nagłówka trzeba dodać jeszcze jedno (czyli razem dwa) \r\n.
 

5.56

Użytkownik
Dołączył
Luty 1, 2010
Posty
102
Kod:
	char *ipString = "GET /appsvc/appmsg_ver8.asp?fmnumber=1& HTTP/1.1\r\nConnection: Keep-Alive\r\nHost: appmsg.gadu-gadu.pl\r\n\r\n";
U mnie działa.
 

adrian_134

Użytkownik
Dołączył
Styczeń 28, 2007
Posty
39
Ok dzięki, u mnie już też prawie działa, tzn. www.coubetech.republika.pl/get.jpg
A odbieram dane tak:
Kod:
void recv_data(SOCKET* aSocket, char* aData)
{
    recv(*aSocket, aData, strlen(aData), 0);
 }

    char buffer[2048];
    recv_data(&connect, buffer);

Te takie znaki co są odbierane... Najpierw myślałem że to wina dużej tablicy i jej przypadkowego wypełnienia bo jest na stosie..., no ale zobaczyłem że na końcu tego co serwer wysłał jest to co ja do niego wysłałem.. Wysyłam to co podał 5.56
Kod:
char pakiet* = "GET /appsvc/appmsg_ver8.asp?fmnumber=1& HTTP/1.1\r\nConnection: Keep-Alive\r\nHost: appmsg.gadu-gadu.pl\r\n\r\n";

OK to już rozwiązałem, tylko teraz jak próbuje wysłać jakąś wiadomość np "elo" to dochodzi coś w rodzaju XAXA...
Kod:
#define GG_SEND_MSG80 0x002d

    struct gg_send_msg80 {
        int recipient;        /* numer odbiorcy */
        int seq;        /* numer sekwencyjny */
        int classs;        /* klasa wiadomości */
        int offset_plain;    /* położenie treści czystym tekstem */
        int offset_attributes;    /* położenie atrybutów */
        char* html_message;    /* treść w formacie HTML (zakończona \0) */
        char* plain_message;    /* treść czystym tekstem (zakończona \0) */
        char* attributes;    /* atrybuty wiadomości */
    }mmss;

    mmss.recipient = 2357907;        /* numer odbiorcy */
    mmss.seq=2;        /* numer sekwencyjny */
    mmss.classs=0x0008;        /* klasa wiadomości */
    mmss.offset_plain=0;    /* położenie treści czystym tekstem */
    mmss.offset_attributes=0;    /* położenie atrybutów */
    mmss.html_message="\0";    /* treść w formacie HTML (zakończona \0) */
    mmss.plain_message="elo\0";    /* treść czystym tekstem (zakończona \0) */
    mmss.attributes = 0x00;    /* atrybuty wiadomości */
    
    header.type=GG_SEND_MSG80;
    header.length=sizeof(mmss);
    send(sockd, (char*)&header, sizeof(header),0); 

    if (send(sockd, (char*)&mmss, header.length,0 ) )
    {
        clear(&header);
        printf("Wyslano\n");
    }
Sory za post pod postem
 
Ostatnio edytowane przez moderatora:

5.56

Użytkownik
Dołączył
Luty 1, 2010
Posty
102
Długość treści wiadomości nie powinna przekraczać 2000 znaków. Oryginalny klient zezwala na wysłanie do 1989 znaków. Treść w formacie HTML jest kodowana UTF-8. Treść zapisana czystym tekstem jest kodowana zestawem znaków CP1250.
A moja szklana kula podpowiada mi,że prawdopodobnie "kodujesz" w ASCII,ew.w UTF'ie.
Spróbuj wysłać HTML'em próbkę z opisu protokołu,dodając L(tzn.L"<blabla>test</blabla>") na początku.Jak dojdzie oryginał,problem z kodowaniem,jak nie - problem z tzw."strukturą wiadomości".
 

adrian_134

Użytkownik
Dołączył
Styczeń 28, 2007
Posty
39
A moja szklana kula podpowiada mi,że prawdopodobnie "kodujesz" w ASCII,ew.w UTF'ie.
Spróbuj wysłać HTML'em próbkę z opisu protokołu,dodając L(tzn.L"<blabla>test</blabla>") na początku.Jak dojdzie oryginał,problem z kodowaniem,jak nie - problem z tzw."strukturą wiadomości".

Wychodzi na to że problem jest ze strukturą... Tylko co jest nie tak?
 

5.56

Użytkownik
Dołączył
Luty 1, 2010
Posty
102
Może zapominasz o gg_header(sam początek dokumentu),być może o czymś innym...najlepiej będzie,jak we własnym zakresie spod sniffera(np.Wiresharka) porównasz pakiet wysyłany z własnej aplikacji i pakiet wysyłany z gg.
 

adrian_134

Użytkownik
Dołączył
Styczeń 28, 2007
Posty
39
Może zapominasz o gg_header(sam początek dokumentu),być może o czymś innym...najlepiej będzie,jak we własnym zakresie spod sniffera(np.Wiresharka) porównasz pakiet wysyłany z własnej aplikacji i pakiet wysyłany z gg.
No dobra tylko że mam modem na usb....

Problem rozwiązany....
 
Ostatnio edytowane przez moderatora:
Do góry Bottom