socket通信客户端先用校验算法求出校验和???

mirroatl187 2015-06-07 12:53:45

typedef struct Packets
    {
unsigned char head[8]; /* 包头 */
unsigned char type[4]; /* 包类型 */
unsigned char code[4]; /* 命令字 */
unsigned long int len; /* 包长度 */
unsigned long int CheckSum; /* 校验和 */
 unsigned char *Data; /* 数据区 */
    } Packets;



/* 下面是首部校验和的算法 */
unsigned short in_cksum(unsigned short *addr, int len) /* function is from ping.c */
{
register int nleft = len;
register u_short *w = addr;
register int sum = 0;
u_short answer =0;

while (nleft > 1)
{
sum += *w++;
nleft -= 2;
}
if (nleft == 1)
{
*(u_char *)(&answer) = *(u_char *)w;
sum += answer;
}
sum = (sum >> 16) + (sum & 0xffff);
sum += (sum >> 16);
answer = ~sum;
return(answer);
}
...全文
286 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiqiang01234 2015-06-09
  • 打赏
  • 举报
回复
看《TCP/IP详解》第一卷,你想知道的全有
mirroatl187 2015-06-08
  • 打赏
  • 举报
回复
大哥呀,tcp通信消息头一般存储什么信息呀???求赐教呀
引用 5 楼 wxhxj0268 的回复:
TCP/IP是可靠通信协议,其内部已经有校验,也就是说如果你能收到数据,它一定是正确的。
笨笨仔 2015-06-08
  • 打赏
  • 举报
回复
TCP/IP是可靠通信协议,其内部已经有校验,也就是说如果你能收到数据,它一定是正确的。
mirroatl187 2015-06-08
  • 打赏
  • 举报
回复
那什么需要 校验算法?能明说否?
引用 3 楼 wxhxj0268 的回复:
TCP通信还要做“校验”?
笨笨仔 2015-06-07
  • 打赏
  • 举报
回复
TCP通信还要做“校验”?
jiqiang01234 2015-06-07
  • 打赏
  • 举报
回复
没看明白问题的疑问句是什么意思
mirroatl187 2015-06-07
  • 打赏
  • 举报
回复
unsigned long int CheckSum; /* 校验和 */ 客户端发包的这个校验和怎么求???用首部校验和的算法可以吗??

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧