阅读:1530回复:5
各位大虾帮忙看一下这个计算tcp校验和的函数到底行不行啊?
short checksum(short *buffer, int size)
{ unsigned long cksum=0; while(size >1) { cksum+=*buffer++; size -=sizeof(short); } if(size ) { cksum += *(char*)buffer; } cksum = (cksum >> 16) + (cksum & 0xffff); cksum += (cksum >>16); return (short)(~cksum); } 用这个函数计算ip校验和正确,但一计算tcp校验和就出问题。计算的结果总是和原始的包的校验和不一样。在计算前我一将tcp得校验和设为0了。谢谢了! |
|