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

📄 eroomnet.h

📁 network library that can be use all network application!
💻 H
字号:
#ifndef EROOMNET_DEF
#define EROOMNET_DEF

#include	"WiseNet.h"

#define		DEF_ERM_PORT		4031
#define		DEF_ERM_SPORT		4054

#if 1		// 1雀父 角青
#define		EN_TRYCNT					1
#define		EN_WAITTIME					20
#else
#define		EN_TRYCNT					3
#define		EN_WAITTIME					20
#endif

//////////////////////////////////////////////////////////////////////////////////////////
// CHECK BYTE
// 菊 8 BIT固荤侩 
//
// +--+--+--+--+--+--+--+--+
// |CN|RN|CO|RE|NONE |PF|PL|
// +--+--+--+--+--+--+--+--+
// | 0| 1| 2| 3| 4| 5| 6| 7|    
// +--+--+--+--+--+--+--+--+
// 
// NO: NO USE
//

#define		EN_CONFIRM_NEED		0x0080  // 00000000 10000000 => CN: CONFIRM NEED单捞鸥啊 档馒沁绰瘤 犬牢捞  鞘夸茄版快 ==> 100% 犬角洒 傈崔窍绊 酵篮 版快 
                                        //              焊辰螟俊辑绰 档馒且锭鳖瘤 扁促覆 
#define		EN_ANSWER_NEED		0x0040	// 00000000 01000000 => RN: ANSWER NEED 单捞鸥甫 焊辰螟俊辑 览翠皋技瘤甫 扁促覆 

#define		EN_CONFIRM			0x0020	// 00000000 00100000 => CONFIRM PACKET
#define		EN_ANSWER			0x0010	// 00000000 00010000 => ANSWER PACKET
										// ANSWER, CONFIRM矫浚 焊辰 SEQ甫 啊瘤绊 柯促.
								
#define		EN_PACKET_FIRST		0x0002	// 00000000 00000010	=> PF: FISRT PACKET
#define		EN_PACKET_LAST		0x0001	// 00000000 00000001 => PL: LAST PACKET
#define		EN_PACKET_ONLY		0x0003	// 00000000 00000011 => 1俺 楼府 PACKET(EN_PACKET_FIRST|EN_PACKET_LASF)
										//       00 捞搁 吝埃 菩哦 
										// EN_CONFIRM_NEED 肚绰 EN_ANSWER_NEED 菩哦篮 馆靛矫  EN_PACKET_ONLY捞促.

struct __ERM_PACKET_HEAD {
	unsigned char	m_Code[2];		// Identifier ==> 2BYTE CHECK 
	unsigned short	m_Check;		// define 曼炼
	unsigned short	m_Sequence;		// 皋技瘤 老纺锅龋 ==> (辑滚俊辑)览翠矫俊绰 秦寸 锅龋荤侩 (1~何磐)
									// 辑滚俊辑 老规傈价矫绰 0
	unsigned short  m_RSequence;	// RETURN SEQUENCE ==> ANSWER/CONFIRM矫俊父 荤侩 
	unsigned short	m_CheckSum;		// ANSWER牢版快 盔贰 龙巩俊 措翠犬牢阑 困茄 锅龋 
	unsigned short  m_RCheckSum;	// RETURN CHECKSUM

	unsigned short  m_Cmd;			// USER COMMAND	(0 ~ )
	unsigned short  m_Option;		// USER COMMAND OPTION ==> ANSWER牢 版快浚 RCmd啊 等促 (盔贰 龙巩狼 夸备疙飞)
	unsigned short  m_ECode;		// ERROR CODE
	unsigned short	m_Len;			// Data Len;
};
typedef struct __ERM_PACKET_HEAD ERMPACKETHEAD;

#define	ERM_PACKETHEAD_SIZE		sizeof(ERMPACKETHEAD)	// 20 BYTE
#define	ERM_PACKETDATA_SIZE		1200

struct __ERM_PACKET {
	ERMPACKETHEAD	m_Head;
	unsigned char   m_Data[ERM_PACKETDATA_SIZE];
};
typedef struct __ERM_PACKET ERMPACKET;

// FLAG
#define			EN_INUSE_FLAG			0x0001		//  荤侩窍绰 瘤 咯何 敲贰弊 
#define			EN_SEND_FLAG			0x0002		//  单捞鸥 焊陈绰瘤咯何 敲贰弊 

struct __ERM_QUEUE {
	unsigned short	m_Flag;				// define 曼炼 
	unsigned short	m_RCheck;			// 档馒单捞鸥 眉农  m_Check客 鞍澜  
										//  ==> 档馒窍搁 NEED FLAG甫 OFF 
	unsigned short	m_RQIndex;			// 档馒 单捞鸥 困摹
	unsigned short	m_Dummy;

	int				m_Port;				// 惑措 器飘(傈价且锭/荐脚且锭)
	char			m_Ip[64];			// 惑措 IP(傈价且锭/荐脚且锭) 
	ERMPACKETHEAD	m_Head;
	unsigned char   *mp_Data;			// 单捞鸥 沥焊 ==> new肺 秦辑 且寸窍霸凳 
};
typedef struct __ERM_QUEUE ERMQUEUE;


#define			MAX_SQUEUENUM			1024	// SEND_QUEUE狼 箭磊
#define			MAX_RQUEUENUM			1024	// RECV_QUEUE狼 箭磊


// RESERVED CMD	(0~1023)                1024~65535 荤侩磊 烙狼 荤侩备埃

#define			EN_CMD_NONE				0
#define			EN_CMD_POLLING			1
#define			EN_CMD_REGIST			2

#define			EN_CMD_USER				1024 

// RESERVED ERROR NUMBER (0~1023)	    0~65535狼 剧狼 沥荐 ==> 唱吝俊 -甫 嘿咯 府畔 
//                                      1024~65535 荤侩磊 备埃 

#define			EN_ERR_SEND				1		// SEND ERROR
#define			EN_ERR_CANCEL			2		// 秒家登菌澜 
#define			EN_ERR_USER				1024


class CEroomNet : public CWiseNet
{
public:
	int		m_Mode;
	int		m_TryCnt;			// 扁夯 馆汗 冉荐 
	int		m_WaitTime;			// 扁夯 冉荐喊 措扁 矫埃
	int		m_CancelFlag;		// 角青秒家 敲贰弊 
	int		m_Sequence;			// 泅犁 Sequence Number (1 ~ MAX_QUEUENUM) ==> SEND QUEUE INDEX
								// QUEUE俊 历厘捞 救瞪锭绰 刘啊啊 救凳 ==> 0 ==> (茄率狼 老规傈价 肚绰 览翠捞 鞘夸绝阑 版快)
								
	unsigned char	m_Code[4];	// ID眉农巩磊 

	int		m_RecvQIndex;	// 

	ERMQUEUE	m_SendQ[MAX_SQUEUENUM];
	ERMQUEUE	m_RecvQ[MAX_RQUEUENUM];


public:
	CEroomNet(int a_QueueFlag);					
	~CEroomNet();

	virtual void SetCode(char *ap_Code)		{ m_Code[0] = ap_Code[0];m_Code[1]= ap_Code[1];m_Code[2]=0;	};
	virtual void GetCode(char *ap_Code)		{ ap_Code[0] = m_Code[0];ap_Code[1]= m_Code[1];ap_Code[2]=0;};
	virtual char *GetCode()					{ return((char *)m_Code);	};
	virtual bool CheckCode(char *ap_Code)	{ if(ap_Code[0] != m_Code[0] || ap_Code[1] != m_Code[1]) { return(FALSE);} return TRUE; };

	virtual int  SetWaitTime(int a_Time)	{ int w_OldTime = m_WaitTime;  m_WaitTime = a_Time * 1000; return(w_OldTime); };
	virtual int  SetTryCnt  (int a_Cnt)		{ int w_OldCnt = m_TryCnt;     m_TryCnt = a_Cnt;		   return(w_OldCnt);  };

	virtual int	 GetWaitTime()				{ return(m_WaitTime);		};
	virtual int  GetTryCnt()				{ return(m_TryCnt);			};
	virtual void  CancelSending()			{ m_CancelFlag = 1;			};

	int SetRecvFunc(int (*ap_RecvFunc)(char *ap_Ip, int ar_Port, char *ap_Buff, int w_Len), int a_WaitTime = WN_NOWAIT);

	virtual int	Send(char *ap_Ip, int a_Port, ERMPACKET *ap_Packet);
	virtual int	Recv(char *ap_Ip, int &ar_Port, char *ap_Buff, int &ar_Len);


	int			 GetRecvData(ERMQUEUE *ap_Packet, int a_Index);
	ERMQUEUE	 *GetRecvData(int a_Index);

	virtual void SendConfirm(char *ap_Ip, int a_Port, USHORT a_Seq,  USHORT a_CheckSum);
};

#endif

⌨️ 快捷键说明

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