ďťż

Ł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
  •