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

📄 net.h

📁 是一个基于热血战国协议的网络游戏。现在脱机客户端先放出来给大家研究
💻 H
字号:

/*
 * name:		Net.h
 *
 * desc:		实现文件,这里没有实现加密解密函数,是在子类那里实现的
 *
*/

#pragma once

//1.声明消息
#define DECLARE_MM_ENTRY(cmd) public: void On_##cmd(const MMSG& msg,const char* body);
//2.定义消息
#define IMPLEMENT_MM_ENTRY(cmd) void CLASS_GAME::On_##cmd(const MMSG& msg,const char* body)
//3.在Switch里面调用消息
#define ROUTINE_MM_ENTRY(cmd) case cmd: On_##cmd(msg,body); break;
//4.忽略消息
#define IGNORE_MM_ENTRY(cmd) case cmd: break;
//5.在函数那里调用消息
#define REDIRECT_MM_ENTRY(cmd) On_##cmd(msg,body);

class CNet : public CAsyncSocket
{
	DECLARE_DYNAMIC(CNet);

public: //函数
	CNet();
	virtual ~CNet();
	virtual void OnReceive(int nErrorCode); //接收
	virtual void OnMessage(MMSG& , char* )=0;
	virtual void OnResult(const char *)=0;
	virtual void Login(const std::string& ServerAddress, const std::string& ServerName, UINT ServerPort, const std::string& Account, const std::string& Password)=0;
	
	//发送函数
	int SendMsg( const MMSG& msg, const char* data=NULL );
	int SendMsg( WORD wCmd, DWORD dwFlag=0, WORD w1=0, WORD w2=0, WORD w3=0, const char* data=NULL);

	static void SplitString(const char* str, const char* split, std::vector<std::string>& sl);

private: //函数
	virtual int fnEncode6BitBufA(unsigned char *pszSrc, char *pszDest, int nSrcLen, int nDestLen)=0;
	virtual int fnDecode6BitBufA(const char *pszSrc, char *pszDest, int nDestLen)=0;

private: //变量
	char m_RecvBuf[0x10000]; 
	long m_RecvLen;

protected: //变量
	char m_PacketIndex;

};


⌨️ 快捷键说明

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