gg_send_msg80 wysylanie;
wysylanie.header.type = GG_SEND_MSG80;
wysylanie.header.length = sizeof(gg_send_msg80)-sizeof(gg_header);
wysylanie.recipient = 5688868;
wysylanie.clas = 0x0008;
sprintf(wysylanie.plain_message,"Wiadomosc");
wysylanie.offset_plain = 0;
Client->Socket->SendBuf(&wysylanie,sizeof(wysylanie));
msglist->Lines->Add("WYSYLANIE WIADOMOSCI");
- Kod: Zaznacz cały
sprintf(wysylanie.plain_message,"Wiadomosc");
#define GG_SEND_MSG80 0x002d
struct gg_send_msg80 {
int recipient; /* numer odbiorcy */
int seq; /* numer sekwencyjny */
int class; /* 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 */
};
gg_send_msg80 wysylanie;
wysylanie.header.type = GG_SEND_MSG80;
wysylanie.header.length = sizeof(gg_send_msg80)-sizeof(gg_header);
wysylanie.recipient = 18199693;
wysylanie.seq = 0;
wysylanie.clas = 0x0008;
wysylanie.offset_plain = 0;
wysylanie.offset_attributes = 0;
strcpy(wysylanie.plain_message,"Wiadomosc");
Client->Socket->SendBuf(&wysylanie,sizeof(wysylanie));
Tak wygląda struktura wysyłania wiadomości.
gg_send_msg80 wysylanie;
wysylanie.header.type = GG_SEND_MSG80;
wysylanie.header.length = sizeof(gg_send_msg80)-sizeof(gg_header);
...
strcpy(wysylanie.plain_message,"Wiadomosc");
Dalej efekt ten sam.
Jak powinienem wypełnić wysyłanie.html_message jeżeli nie chcę z tego kożystać?
No nie wygląda, bo masz tam:
struct gg_send_msg80 {
gg_header header;
int recipient; // numer odbiorcy
int seq; // numer sekwencyjny
int clas; // klasa wiadomości
int offset_plain; // położenie treści czystym tekstem
int offset_attributes; // położenie atrybutów
char html_message[0]; // treść w formacie HTML (zakończona \0)
char plain_message[2000]; // treść czystym tekstem (zakończona \0)
char attributes[0]; // atrybuty wiadomości
Oto jest moja struktura.
I co masz na myśli pisząc ustaw je poprawnie? Mój kod jest po kolei tak jak idzie struktura
Możesz powiedzieć jak za pomocą sniffera coś sprawdzić ?
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.
Dla czystego tekstu dodawane są informacje o tym, że tekst ma kolor czarny:
Bajty Opis
0x02 Flaga formatowania tekstu
0x06 0x00 Długość bloku formatowania wynosi 6 bajtów
0x00 0x00 Atrybut tekstu od pozycji 0
0x08 Tekst kolorowy
0x00 0x00 0x00 Kolor czarny
Numer sekwencyjny w poprzednich wersjach protokołu był losową liczbą pozwalającą przypisać potwierdzenie do wiadomości. Obecnie jest znacznikiem czasu w postaci uniksowej (liczba sekund od 1 stycznia 1970r. UTC).
Po co wciskasz tam gg_header, przecież pokazałem Ci, jak to powinno wyglądać?
Mam zakodować tekst tym CP1250 ?
Jak to zrozumiec?
Nawet w google nie mogę znaleść przykładów użycia offset_plain i offset_attributes;
Czy to jest konieczne? (z numerem sekwencyjnym równym 0 lub równym liczbie sekund różnicy nie widac)
Tak jest mi wygodniej a problemów to raczej nie robi.
0000 00 1b 11 f8 34 1e 00 0f ea 6d 87 80 08 00 45 00 ....4... .m....E.
0010 00 c5 2a c2 40 00 80 06 a5 44 c0 a8 00 96 5b c5 ..*.@... .D....[.
0020 0d 29 04 48 1f 8a 40 76 4e 3d d9 70 fc cd 50 18 .).H..@v N=.p..P.
0030 bb 9c 2a e4 00 00 2d 00 00 00 95 00 00 00 24 ce ..*...-. ......$.
0040 56 00 46 96 61 4b 08 00 00 00 79 00 00 00 8c 00 V.F.aK.. ..y.....
0050 00 00 3c 73 70 61 6e 20 73 74 79 6c 65 3d 22 63 ..<span style="c
0060 6f 6c 6f 72 3a 23 30 30 30 30 30 30 3b 20 66 6f olor:#00 0000; fo
0070 6e 74 2d 66 61 6d 69 6c 79 3a 27 4d 53 20 53 68 nt-famil y:'MS Sh
0080 65 6c 6c 20 44 6c 67 20 32 27 3b 20 66 6f 6e 74 ell Dlg 2'; font
0090 2d 73 69 7a 65 3a 39 70 74 3b 20 22 3e 57 49 41 -size:9p t; ">WIA
00a0 44 4f 4d 4f 53 43 20 54 45 4b 53 54 4f 57 41 3c DOMOSC T EKSTOWA<
00b0 2f 73 70 61 6e 3e 00 57 49 41 44 4f 4d 4f 53 43 /span>.W IADOMOSC
00c0 20 54 45 4b 53 54 4f 57 41 00 02 06 00 00 00 08 TEKSTOW A.......
00d0 00 00 00 ...
0000 00 0f ea 6d 87 80 00 1b 11 f8 34 1e 08 00 45 00 ...m.... ..4...E.
0010 00 c9 1c 4c 40 00 3a 06 f9 b6 5b c5 0d 29 c0 a8 ...L@.:. ..[..)..
0020 00 96 1f 8a 04 25 d3 ce 1b fd 21 8f ff 29 50 18 .....%.. ..!..)P.
0030 23 70 3f dd 00 00 2e 00 00 00 99 00 00 00 e5 18 #p?..... ........
0040 2f 01 04 00 00 00 48 96 61 4b 08 00 00 00 7d 00 /.....H. aK....}.
0050 00 00 90 00 00 00 3c 73 70 61 6e 20 73 74 79 6c ......<s pan styl
0060 65 3d 22 63 6f 6c 6f 72 3a 23 30 30 30 30 30 30 e="color :#000000
0070 3b 20 66 6f 6e 74 2d 66 61 6d 69 6c 79 3a 27 4d ; font-f amily:'M
0080 53 20 53 68 65 6c 6c 20 44 6c 67 20 32 27 3b 20 S Shell Dlg 2';
0090 66 6f 6e 74 2d 73 69 7a 65 3a 39 70 74 3b 20 22 font-siz e:9pt; "
00a0 3e 57 49 41 44 4f 4d 4f 53 43 20 54 45 4b 53 54 >WIADOMO SC TEKST
00b0 4f 57 41 3c 2f 73 70 61 6e 3e 00 57 49 41 44 4f OWA</spa n>.WIADO
00c0 4d 4f 53 43 20 54 45 4b 53 54 4f 57 41 00 02 06 MOSC TEK STOWA...
00d0 00 00 00 08 00 00 00 .......
0000 00 0f ea 6d 87 80 00 1b 11 f8 34 1e 08 00 45 00 ...m.... ..4...E.
0010 00 28 1c 4d 40 00 3a 06 fa 56 5b c5 0d 29 c0 a8 .(.M@.:. .V[..)..
0020 00 96 1f 8a 04 25 d3 ce 1c 9e 21 8f ff 35 50 10 .....%.. ..!..5P.
0030 23 70 2d 57 00 00 00 00 00 00 00 00 #p-W.... ....
time_t sekundy;
sekundy = time (NULL);
gg_send_msg80 wysylanie;
wysylanie.header.type = GG_SEND_MSG80;
wysylanie.header.length = sizeof(gg_send_msg80)-sizeof(gg_header);
wysylanie.recipient = 18199693;
wysylanie.seq = sekundy;
wysylanie.clas = 0x0008;
wysylanie.offset_plain = 0x00;
wysylanie.offset_attributes =0x0;
strcpy(wysylanie.html_message,"<span style=""color:#000000; font-family:'MS Shell Dlg 2'; font-size:9pt; "">Test</span>");
strcpy(wysylanie.plain_message,"Test");
strcpy(wysylanie.attributes, "02 06 00 00 00 08 00 00 00");
Client->Socket->SendBuf(&wysylanie,sizeof(wysylanie));
" więc zakańcza mi string czy dodanie jeszcze jednego "
"<span style=\" color:#000000; font-family:'MS Shell Dlg 2'; font-size:9pt; \">Test</span>"
time_t sekundy;
sekundy = time (NULL);
gg_send_msg80 wysylanie;
wysylanie.header.type = GG_SEND_MSG80;
wysylanie.header.length = sizeof(gg_send_msg80)-sizeof(gg_header);
wysylanie.recipient = 18199693;
wysylanie.seq = sekundy;
wysylanie.clas = 0x0008;
wysylanie.offset_plain = 0x00;
wysylanie.offset_attributes =0x0;
strcpy(wysylanie.html_message,"<span style=\"color:#000000; font-family:'MS Shell Dlg 2'; font-size:9pt; \">Test</span>");
strcpy(wysylanie.plain_message,"Test");
wysylanie.attributes[0] = 02;
wysylanie.attributes[1] = 06;
wysylanie.attributes[2] = 00;
wysylanie.attributes[3] = 00;
wysylanie.attributes[4] = 00;
Client->Socket->SendBuf(&wysylanie,sizeof(wysylanie));
Dostarczono do:18199693
18199693
(ô
0000 00 1b 11 f8 34 1e 00 0f ea 6d 87 80 08 00 45 00 ....4... .m....E.
0010 05 dc 16 f7 40 00 80 06 b3 cd c0 a8 00 96 5b c5 ....@... ......[.
0020 0d 54 04 bb 1f 8a 6d 15 60 af 35 bb e3 24 50 10 .T....m. `.5..$P.
0030 ff df 30 26 00 00 2d 00 00 00 e4 07 00 00 8d b4 ..0&..-. ........
0040 15 01 8c e1 61 4b 08 00 00 00 00 00 00 00 00 00 ....aK.. ........
0050 00 00 54 65 73 74 00 20 73 74 79 6c 65 3d 22 63 ..Test. style="c
0060 6f 6c 6f 72 3a 23 30 30 30 30 30 30 3b 20 66 6f olor:#00 0000; fo
0070 6e 74 2d 66 61 6d 69 6c 79 3a 27 4d 53 20 53 68 nt-famil y:'MS Sh
0080 65 6c 6c 20 44 6c 67 20 32 27 3b 20 66 6f 6e 74 ell Dlg 2'; font
0090 2d 73 69 7a 65 3a 39 70 74 3b 20 22 3e 54 65 73 -size:9p t; ">Tes
00a0 74 3c 2f 73 70 61 6e 3e 00 00 00 ee 12 00 f6 1a t</span> ........
00b0 1d 5b e6 04 01 00 7d 00 00 00 f0 ff ff ff 08 f3 .[....}. ........
00c0 12 00 08 f3 12 00 d0 78 18 00 7e 88 d3 77 db 1a .......x ..~..w..
00d0 1d 5b e0 ee 12 00 08 f3 12 00 d0 78 18 00 7e 88 .[...... ...x..~.
00e0 d3 77 84 00 00 00 00 00 00 00 41 03 a5 02 04 00 .w...... ..A.....
00f0 00 00 00 00 00 00 08 00 00 00 7a b2 d3 77 00 00 ........ ..z..w..
0100 00 00 1c ee 12 00 3d 1b 1d 5b 00 00 00 00 00 00 ......=. .[......
0110 00 00 00 00 39 00 f5 a1 94 7c 40 f0 12 00 f4 b5 ....9... .|@.....
0120 91 7c 86 b6 91 7c 70 00 00 00 00 00 39 00 01 00 .|...|p. ....9...
0130 00 00 50 b2 d3 77 08 f3 12 00 00 00 00 00 7e 88 ..P..w.. ......~.
0140 d3 77 20 00 00 00 00 00 00 00 70 05 3b 00 00 00 .w ..... ..p.;...
0150 00 00 00 08 b2 00 d8 ee 12 00 40 de 1c 50 4f 1c ........ ..@..PO.
0160 01 ac 00 00 00 00 88 ee 12 00 d0 f1 12 00 90 ee ........ ........
0170 12 00 00 08 b2 00 d8 ee 12 00 16 e4 1c 50 4f 1c ........ .....PO.
0180 01 ac 90 ee 12 00 00 00 00 00 00 08 b2 00 88 e5 ........ ........
0190 1c 50 00 00 00 00 00 00 00 00 a0 15 af 00 f0 52 .P...... .......R
01a0 b0 00 d0 ab 29 50 d0 f1 12 00 a0 15 af 00 58 f1 ....)P.. ......X.
01b0 12 00 ef 20 2c 50 a0 15 af 00 58 f1 12 00 04 00 ... ,P.. ..X.....
01c0 00 00 03 00 00 00 00 00 00 00 00 00 00 00 06 00 ........ ........
01d0 00 00 4f 1c 01 ac a0 15 af 00 48 ef 12 00 5a a9 ..O..... ..H...Z.
01e0 29 50 50 ef 12 00 83 a9 29 50 8a a9 29 50 d0 f1 )PP..... )P..)P..
01f0 12 00 a0 15 af 00 58 f1 12 00 73 02 00 00 b3 1b ......X. ..s.....
0200 10 0d a0 15 af 00 00 00 00 00 70 05 3b 00 15 d4 ........ ..p.;...
0210 d3 77 4f 1c 01 ac 21 00 f0 00 2c ef 12 00 00 f0 .wO...!. ..,.....
0220 fd 7f 00 00 00 00 48 ef 12 00 55 98 f1 77 70 05 ......H. ..U..wp.
0230 3b 00 01 00 00 00 00 00 00 00 d0 f1 12 00 a0 15 ;....... ........
0240 af 00 58 f1 12 00 01 00 00 00 78 ef 12 00 e9 ea ..X..... ..x.....
0250 29 50 4f 1c 01 ac 01 00 00 00 09 eb 29 50 28 f1 )PO..... ....)P(.
0260 12 00 27 eb 29 50 2e eb 29 50 77 00 00 00 01 00 ..'.)P.. )Pw.....
0270 00 00 58 f1 12 00 a0 15 af 00 a8 f0 12 00 ff 5d ..X..... .......]
0280 29 50 d0 f1 12 00 c8 0f c7 00 58 f1 12 00 ff ff )P...... ..X.....
0290 ff ff a5 01 00 00 0e c0 d3 77 00 00 00 00 a0 0d ........ .w......
02a0 00 00 e6 04 01 00 7d 00 00 00 f0 ff ff ff 78 01 ......}. ......x.
02b0 39 00 78 01 39 00 00 00 00 00 58 62 39 00 f0 52 9.x.9... ..Xb9..R
02c0 b0 00 e0 ef 12 00 34 c0 d3 77 11 00 00 00 e6 04 ......4. .w......
02d0 01 00 7d 00 00 00 88 00 00 00 08 f3 12 00 00 00 ..}..... ........
02e0 00 00 50 62 39 00 c5 a7 29 50 50 62 39 00 58 62 ..Pb9... )PPb9.Xb
02f0 39 00 7d 00 00 00 11 00 00 00 08 f3 12 00 00 00 9.}..... ........
0300 00 00 cc f1 12 00 f0 52 b0 00 cc f1 12 00 00 00 .......R ........
0310 00 00 00 00 00 00 68 01 39 00 00 00 03 00 78 01 ......h. 9.....x.
0320 39 00 88 00 00 00 00 00 39 00 24 ee 12 00 00 00 9....... 9.$.....
0330 00 00 b4 f0 12 00 18 ee 90 7c 90 b6 91 7c ff ff ........ .|...|..
0340 ff ff 86 b6 91 7c c4 f0 12 00 a2 d8 96 7c 08 06 .....|.. .....|..
0350 39 00 86 d8 96 7c 00 00 39 00 00 00 00 00 00 00 9....|.. 9.......
0360 39 00 54 f1 12 00 01 00 00 00 50 f1 12 00 01 00 9.T..... ..P.....
0370 00 00 00 00 39 00 f5 a1 94 7c a0 f2 12 00 00 00 ....9... .|......
0380 15 00 f5 a1 94 7c ac f2 12 00 f4 b5 91 7c 86 b6 .....|.. .....|..
0390 91 7c 0e 00 00 00 00 00 15 00 01 00 00 00 84 00 .|...... ........
03a0 00 00 24 00 00 00 00 00 00 00 f4 f0 12 00 c5 a6 ..$..... ........
03b0 29 50 28 00 00 00 58 f1 12 00 b8 c4 18 00 a8 d8 )P(...X. ........
03c0 96 7c 1a 00 00 00 86 d8 96 7c b0 01 15 00 00 00 .|...... .|......
03d0 39 00 61 01 00 50 86 b6 91 7c 00 00 00 00 70 00 9.a..P.. .|....p.
03e0 00 00 00 00 39 00 7a b2 d3 77 4a 00 00 00 58 f1 ....9.z. .wJ...X.
03f0 12 00 00 00 00 00 20 f1 12 00 91 f5 2b 50 d0 f1 ...... . ....+P..
0400 12 00 c8 0f c7 00 a0 15 af 00 a0 49 06 50 8b 2a ........ ...I.P.*
0410 1d 50 00 00 39 00 f5 a1 94 7c 40 f3 12 00 f4 b5 .P..9... .|@.....
0420 91 7c 86 b6 91 7c 70 00 00 00 00 00 39 00 01 00 .|...|p. ....9...
0430 00 00 82 9d 29 50 ec f1 12 00 00 00 00 00 08 c4 ....)P.. ........
0440 18 00 80 00 00 00 a0 0d 00 00 b0 01 15 00 d8 62 ........ .......b
0450 39 00 68 f1 12 00 18 00 00 00 18 03 00 00 78 01 9.h..... ......x.
0460 39 00 04 00 00 00 00 00 00 00 94 f1 12 00 09 87 9....... ........
0470 d3 77 d4 04 04 00 18 03 00 00 4f 1c 01 ac 04 00 .w...... ..O.....
0480 00 00 40 06 39 00 4f 1c 01 ac 06 00 00 00 00 00 ..@.9.O. ........
0490 00 00 0c 00 00 00 01 00 00 00 b1 8b d3 77 d8 f1 ........ .....w..
04a0 12 00 64 7d f1 77 4f 1c 01 ac 29 00 00 00 06 00 ..d}.wO. ..).....
04b0 00 00 00 00 00 00 00 00 00 00 5c f2 12 00 00 00 ........ ..\.....
04c0 00 00 06 00 00 00 0c 00 00 00 00 00 00 00 4f 1c ........ ......O.
04d0 01 ac 06 00 00 00 5c f2 12 00 60 f4 12 00 78 01 ......\. ..`...x.
04e0 39 00 4f 1c 01 ac 29 00 00 00 06 00 00 00 5c f2 9.O...). ......\.
04f0 12 00 06 00 00 00 29 00 00 00 78 01 39 00 e0 62 ......). ..x.9..b
0500 39 00 43 b7 d3 77 00 00 00 00 28 00 00 00 d4 04 9.C..w.. ..(.....
0510 04 00 18 03 00 00 4f 1c 01 ac 04 00 00 00 fc b6 ......O. ........
0520 67 00 00 00 00 00 34 f2 12 00 88 01 15 00 16 a9 g.....4. ........
0530 00 00 0b 00 00 00 05 00 00 00 d8 f3 12 00 30 4d ........ ......0M
0540 b0 00 28 00 00 00 ff 5d 29 50 d8 f3 12 00 90 c4 ..(....] )P......
0550 18 00 30 4d b0 00 4f 1c 01 ac ff ff 00 00 50 00 ..0M..O. ......P.
0560 4f 00 4c 00 41 00 43 00 5a 00 00 00 40 00 4a 00 O.L.A.C. Z...@.J.
0570 00 00 53 dc 1e 5b d0 62 39 00 98 c4 18 00 10 75 ..S..[.b 9......u
0580 18 00 7e 88 d3 77 00 00 03 00 b0 01 15 00 28 00 ..~..w.. ......(.
0590 00 00 a5 01 00 00 90 f0 12 00 00 00 00 00 a0 0d ........ ........
05a0 00 00 18 ee 90 7c c0 f2 12 00 a1 b2 d3 77 78 01 .....|.. .....wx.
05b0 39 00 78 01 39 00 00 00 00 00 58 62 39 00 00 00 9.x.9... ..Xb9...
05c0 00 00 b1 8b d3 77 68 00 d9 77 11 00 00 00 08 f3 .....wh. .w......
05d0 12 00 74 b2 d3 77 88 00 00 00 98 c4 18 00 10 75 ..t..w.. .......u
05e0 18 00 50 62 39 00 00 00 00 00 ..Pb9... ..
struct gg_send_msg80
{
int recipient;
int seq;
int class;
int offset_plain;
int offset_attributes;
};
vector<char> buff(sizeof(gg_header) + sizeof(gg_send_msg80));
gg_header* gg_hdr = (gg_header*) &buff[0];
gg_send_msg80* gg_send = (gg_send_msg80*)(gg_hdr + 1);
string msg = "blablabla";
gg_hdr->type = GG_SEND_MSG80;
msg.append(1,'\0');
/* tu wypełnij pozostałe pola gg_send_msg80 */
gg_send->offset_plain = sizeof(gg_send_msg80) + 1;
gg_send->offset_attributes = gg_send->offset_plain + msg.size();
buff.push_back('\0');
buff.insert(buff.end(),msg.begin(),msg.end());
char tab[] = { 2, 6, 0, 0, 0, 8, 0, 0, 0 };
buff.insert(buff.end(),tab,tab + sizeof(tab));
gg_hdr = (gg_header*) &buff[0];
gg_hdr->length = buff.size() - sizeof(gg_header);
Client->Socket->SendBuf(&buff[0],buff.size());
Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 1 gość