Bonjour,
je souhaite developper un programme sous win qui va se connecter a un serveur. Pour cela, les paquets a envoyés doivent etre construits d'une maniere bien précise :
[taille msg sur 4 octets] [code msg sur 4 octets] [taille 'user' sur 4] ['user' texte variable] [taille 'pass' sur 4] ['pass' texte variable]
De plus, les valeur numeriques (tout sauf user et pass) doivent etre ordonnées selon la "norme" little endian.
Donc, une fois envoyé, la partie utile du paquet doit ressembler à ça, avec user="JohnGalt" et pass="secret" :
1e00 0000 : taille msg (25)
0100 0000 : code msg (1)
0800 0000 : taille user (8 )
4a6f 686e 4761 6c74 : user
0600 0000 : taille pass (6)
7365 6372 6574 : pass
Voici ce que j'ai fait (pour l'instant jai laissé le little endian de coté...):
Avec ça j'obtient une taille affichée de 4 et le msg affiché (un simple caractere non imprimable) ne contient donc pas les chaines que je lui ai copié.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 char *buffer; long *taille,*code, *szuser, *szpass, *version; char *user, *pass; buffer = (char *)malloc(1024); taille= (long *)buffer; *taille = 25; code = (long *)(buffer + 4); *code = 1; szuser = (long *)(buffer + 8); *szuser = 3; user = buffer + 12; memcpy(user,"oje",3); ...... //verif, ctmp est un char* sprintf(ctmp,"%s", sizeof(buffer)); MessageBox(Dlg,ctmp,"TAILLE!!!",MB_OK); //29 est la taille totale du msg memcpy(ctmp,buffer,29); MessageBox(Dlg,ctmp,"MSG!!!",MB_OK);
Je vous remercie pour votre aide
Partager