⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 in_cksum.c

📁 unix网络编程卷1:套接口API的全书源码
💻 C
字号:
#include "unp.h"uint16_tin_cksum(uint16_t *addr, int len){	int				nleft = len;	uint32_t		sum = 0;	uint16_t		*w = addr;	uint16_t		answer = 0;	/*	 * Our algorithm is simple, using a 32 bit accumulator (sum), we add	 * sequential 16 bit words to it, and at the end, fold back all the	 * carry bits from the top 16 bits into the lower 16 bits.	 */	while (nleft > 1)  {		sum += *w++;		nleft -= 2;	}		/* 4mop up an odd byte, if necessary */	if (nleft == 1) {		*(unsigned char *)(&answer) = *(unsigned char *)w ;		sum += answer;	}		/* 4add back carry outs from top 16 bits to low 16 bits */	sum = (sum >> 16) + (sum & 0xffff);	/* add hi 16 to low 16 */	sum += (sum >> 16);			/* add carry */	answer = ~sum;				/* truncate to 16 bits */	return(answer);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -