网络传输协议中的和校验函数

来源:互联网 发布:android精彩编程200例 编辑:程序博客网 时间:2024/05/21 12:50

例如下面图中的checksum,经过测试有效可使用
实例图片

代码:

uint16_t net_tool_chksum(uint16_t *addr,int len){    int nleft=len;    int sum=0;    uint16_t *w=addr;    uint16_t answer=0;    while(nleft>1)    {   sum+=*w++;        nleft-=2;    }    if( nleft==1)    {   *(uint8_t *)(&answer)=*(uint8_t *)w;        sum+=answer;    }    sum=(sum>>16)+(sum&0xffff);    sum+=(sum>>16);    answer=~sum;    return answer;}
原创粉丝点击