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

📄 dataandconst.cpp

📁 TCP和UDP数据包发送程序 本程序需要安装Winpcap
💻 CPP
字号:
#include "StdAfx.h"
#include ".\dataandconst.h"

USHORT CheckSum(const char *buf, int size) 
{ 
	USHORT *buffer=(USHORT *)buf;
	unsigned long cksum=0; 
	while(size >1) 
	{ 
		cksum+=*buffer++; 
		size -=sizeof(USHORT); 
	} 
	if(size ) 
	{ 
		cksum += *(UCHAR*)buffer; 
	} 

	cksum = (cksum >> 16) + (cksum & 0xffff); 
	cksum += (cksum >>16); 
	return (USHORT)(~cksum); 
} 
USHORT CheckSum(USHORT *buffer, int size) 
{ 
	unsigned long cksum=0; 
	while(size >1) 
	{ 
		cksum+=*buffer++; 
		size -=sizeof(USHORT); 
	} 
	if(size ) 
	{ 
		cksum += *(UCHAR*)buffer; 
	} 

	cksum = (cksum >> 16) + (cksum & 0xffff); 
	cksum += (cksum >>16); 
	return (USHORT)(~cksum); 
} 


unsigned short TcpCheckSum(const char *pTcpData, const char *pPshData, UINT nTcpCount)
{
	unsigned short sCheckSum = ~CheckSum(pTcpData,nTcpCount);
	unsigned long checkSum = sCheckSum;
	checkSum <<= 16;
	sCheckSum = ~CheckSum(pPshData,12);
	checkSum += sCheckSum;	

	return CheckSum((char*)&checkSum,4);
}
unsigned short UdpCheckSum(const char *pTcpData, const char *pPshData, UINT nTcpCount)
{
	unsigned short sCheckSum = ~CheckSum(pTcpData,nTcpCount);
	unsigned long checkSum = sCheckSum;
	checkSum <<= 16;
	sCheckSum = ~CheckSum(pPshData,12);
	checkSum += sCheckSum;	

	return CheckSum((char*)&checkSum,4);
}

⌨️ 快捷键说明

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