qsc66886688
驱动牛犊
驱动牛犊
  • 注册日期2007-07-02
  • 最后登录2008-06-06
  • 粉丝0
  • 关注0
  • 积分320分
  • 威望43点
  • 贡献值0点
  • 好评度42点
  • 原创分0分
  • 专家分0分
阅读:1530回复:5

各位大虾帮忙看一下这个计算tcp校验和的函数到底行不行啊?

楼主#
更多 发布于:2007-10-15 20:30
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了。谢谢了!
游客

返回顶部