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

📄 natpacket.h

📁 自己开发基于P2P通讯的网络服务器
💻 H
字号:
/*********************************************************************
 * 模块名称:natpacket
 * 说明:NAT服务器的包结构定义,以及协议定义
 * 其它说明: 
 * 作者: 刘青山 
 * 时间 : 2004-09-22 21:13:30 
*********************************************************************/
#ifndef	_NATPACKET_H
#define	_NATPACKET_H

#ifndef _WIN32

typedef unsigned char  BOOL;
typedef unsigned char  BYTE;
typedef unsigned short WORD;
typedef unsigned long  DWORD;

typedef unsigned char  bool;
typedef unsigned char  uint8;
typedef unsigned short uint16;
typedef unsigned long  uint32;

#ifndef true
#define true	1
#endif
#ifndef false
#define false	0
#endif

#endif

#define  NAT_VER	0x03//0x02

#define  MAC_LEN	16
#define  SECRET_KEY "%7fj*9&f^Fh$#j@9"
#define  KEY_LEN	16

enum DES_LEVEL {
	DL_NO_DES = 0,
	DL_DES_DATA,
};
// 无论是服务器发的包还是客户端的包,长度都不会超过1500,如果发送数据块比较大
// 可以在上层分割为更小的包,发送包的长度由引擎通过速度测试决定最合适的包大小
#pragma pack(1)
typedef struct tagP2P_HDR 
{
	BYTE	byVer;		// 版本号
	DWORD	dwDst;		// 目标KKID
	DWORD	dwSrc;		// 源KKID
	DWORD	dwSwitch;	// 中间转发用户,目前主要是服务器
	WORD	wCmd;		// 命令号
	WORD	wSeq;		// 包序列号
	WORD	wAckseq;	// 应答包序列号
	WORD	wDatalen;	// 附带数据长度,整个包最大不超过1024
	BYTE	HMac[MAC_LEN];
	BYTE	byDesLevel; // 加密级别
	WORD	wCheck;		// check code
}P2P_HDR,*LPP2P_HDR;
#pragma pack()

#define  P2P_HDR_LEN		sizeof(P2P_HDR)
#define	 P2P_DATA_LEN		0x400//0x578	// 1400
#define	 P2P_USER_LEN		(P2P_DATA_LEN-P2P_HDR_LEN)

// 服务器或其它响应码

static const WORD ANS_OK=0x0000 ;				// 正确
static const WORD ANS_FAIL=0x0001 ;				// 失败
static const WORD ANS_REG_SUCCESS= 0x0002;		// 申请注册成功
static const WORD ANS_REG_FAIL= 0x0003;			// 注册失败
static const WORD ANS_EXCEED_MAX_USER= 0x0004;	// 请求人数大于系统支持人数
static const WORD ANS_NOT_REG= 0x0005;			// 还没有注册服务


enum
{
// 客户端与服务器之间命令号
CMD_START	=0x0000,
CMD_REG_USER=0x0001,	// 在NAT服务器上注册用户
CMD_REQ_USERINFO,		// 在NAT服务器上查询用户的NAT信息
CMD_REQ_HOLE,			// 服务器向用户申请打洞
CMD_SWITCH,				// 转发数据包
CMD_UNREGISTER,			// 在NAT服务器上注销用户
CMD_ACK,				// 客户端应答包
CMD_KEEPALIVE,			// 保持连接包
// 客户端对客户端命令
CMD_NORMAL_PACKET,		// 发送普通数据包
CMD_MULTI_PACKET,		// 发送多个数据包,目前不支持
CMD_ACK_HOLE,			// 服务器应答申请打洞信息

//CRC命令系列
CMD_REQ_CRC,			// 申请CRC传输
CMD_ACK_CRC,			// Nat服务器的CRC回复包
CMD_EST_CRC,			// CRC双方均已连接成功
CMD_CRC_SWITCH,			// CRC转发数据包

CMD_OFFLINE,			// 用户离线
CMD_REL_CRC,			// 释放CRC的连接

CMD_RPT_STATUS,			// 报告发送普通数据包状况,包头 + 响应码(2个字节,前面定义s)
CMD_END					// 最大命令号
};



#endif

⌨️ 快捷键说明

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