Ĺadny brzuch
Ostatnio siedzę nad protokołem gg, zatrzymałem się przy wysyłaniu i odbieraniu wiadomości, wysyłam jakąś wiadomość i odbieram w orginalnym kliencie no ale zamiast tego co wysłałem dochodzi coś dziwnego np XA ĆĄ...
#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[200]; /* treĹĄĹ w formacie HTML (zakoËczona \0) */ char plain_message[200]; /* treĹĄĹ czystym tekstem (zakoËczona \0) */ char attributes; /* atrybuty wiadomoĹĄci */ }mmss; mmss.recipient = 2357907; /* numer odbiorcy */ mmss.seq=rand() % 65000; /* numer sekwencyjny */ //mmss.classs=0x0008; /* klasa wiadomoĹĄci */ mmss.classs=0x0020; /* klasa wiadomoĹĄci */ mmss.offset_plain=0; /* poâoâenie treĹĄci czystym tekstem */ mmss.offset_attributes=0; /* poâoâenie atrybutËw */ strcpy(mmss.html_message, "\0"); strcpy(mmss.plain_message, "elo\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"); }
Wydaje mi się że coś jest ze strukturą, źle ją wypełniam albo co... Tylko nie wiem co...
Nie znam protokołu ale może to alignment (wyrównanie)? Często struktury na procesorach 32 bitowych są wyrównywane do 4 bajtów. W Twoim przypadku być może wysyłasz zbyt wiele danych i serwer źle je interpretuje. Oczywiście możliwe, że jest masa innych błędów związanych z protokołem - z tym Ci nie pomogę. Ale IMO zwróć uwagę na moje pierwsze zdanie. :)
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
#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[200]; /* treĹĄĹ w formacie HTML (zakoËczona \0) */ char plain_message[200]; /* treĹĄĹ czystym tekstem (zakoËczona \0) */ char attributes; /* atrybuty wiadomoĹĄci */ }mmss; mmss.recipient = 2357907; /* numer odbiorcy */ mmss.seq=rand() % 65000; /* numer sekwencyjny */ //mmss.classs=0x0008; /* klasa wiadomoĹĄci */ mmss.classs=0x0020; /* klasa wiadomoĹĄci */ mmss.offset_plain=0; /* poâoâenie treĹĄci czystym tekstem */ mmss.offset_attributes=0; /* poâoâenie atrybutËw */ strcpy(mmss.html_message, "\0"); strcpy(mmss.plain_message, "elo\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"); }
Wydaje mi się że coś jest ze strukturą, źle ją wypełniam albo co... Tylko nie wiem co...
Nie znam protokołu ale może to alignment (wyrównanie)? Często struktury na procesorach 32 bitowych są wyrównywane do 4 bajtów. W Twoim przypadku być może wysyłasz zbyt wiele danych i serwer źle je interpretuje. Oczywiście możliwe, że jest masa innych błędów związanych z protokołem - z tym Ci nie pomogę. Ale IMO zwróć uwagę na moje pierwsze zdanie. :)