校验和函数:
/*******************************************************
功能:
校验和函数
参数:
buf: 需要校验数据的首地址
nword: 需要校验数据长度的一半
返回值:
校验和
*******************************************************/
unsigned short checksum(unsigned short *buf, int nword)
{
unsigned long sum;
for(sum = 0; nword > 0; nword--)
{
sum += htons(*buf);
buf++;
}
sum = (sum>>16) + (sum&0xffff);
sum += (sum>>16);
return ~sum;
}
这里是在 ubuntu 下通过原始套接字组一个 udp 数据包,给 PC 机的网络调试助手发送信息:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#in