Bonjour,
Je dois calculer le CRC d'une trame, représenté par une structure dans mon programme, que j'envois à un server sur l'adresse loopback.
Le problème est que j'ai une segmentation fault ou si je fais un petit changement, le CRC n'est jamais a 0 pour une trame non endommagée.
Code
Si je laisse le code tel quel, le programme s'arrête avec un beau Segmentation Fault.
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 unsigned short cksum(void *ipt, int len) { long sum = 0; unsigned short *ip; ip = ipt; while(len > 1) { sum += *(ip)++; if(sum & 0x80000000) { sum = (sum & 0xFFFF) + (sum >> 16); len -= 2; } } if(len) sum += (unsigned short) *(unsigned char *) ip; while(sum >> 16) sum = (sum & 0xFFFF) + (sum >> 16); return ~sum; }
Par contre si je metla je n'ai plus ce problème mais si je calcule 2 fois le crc il doit être a 0 à la seconde fois et il ne l'est pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part (unsigned short *)ip++;
J'initialise à 0 un champ CRC dans ma structure et je développe sous Linux Mandriva 2007.
Merci
Bonne soirée
Partager