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

📄 cmoverlapped.h

📁 Soul的源代码,类似于劲舞团之类的游戏
💻 H
字号:
#ifndef  __CMOVERLAPPED_H
#define  __CMOVERLAPPED_H

#include <WinSock2.h>
#include <mswsock.h>

namespace MatrixCore
{
	namespace Network
	{
#define PACKETBUFFERSIZE 4096
#define PACKETBUFFERMAXSIZE (PACKETBUFFERSIZE * 8)
		//单捞鸥 惑怕
		enum State { eCLOSE	= 0, 
			eSERV_ACCEPT,
			eACCEPT,
			eREAD  ,
			eSEND  ,
			eEXIT
		};

		enum StateServer { eServer	= 0, 
			eClient,
			eClient_Wait,					// 努扼捞攫飘 牢刘犬牢吝.
			eClient_Testimony,				// 努扼捞攫飘啊 牢刘登菌促.
			eServerClient					// 辑滚埃俊 立加茄 捞亥飘 家南
		};

		enum DetailStateOV {
			eClientOV = 1,
			eLoginServerOV,
			eWorldServerOV,
			eGameServerOV,
			eDBAgentOV,
			eLogServerOV
		};

		// 府矫宏茄 单捞鸥 惑怕
		enum DataState {
						eNormalRecv		= 0	,		//	扁夯 惑怕
						eNoHeaderRecv,				//	庆歹甫 促 给罐篮 惑怕
						eNoDataRecv					//	单捞鸥甫 促 给罐篮 惑怕
					 };
		const enum { bs = PACKETBUFFERSIZE };

		typedef struct _RecvIoContext
		{
			char		AcceptBuf[bs];		// Accept buffer
			char		RecvBuf[bs];		// Recv buffer
			char		OnRecvBuf[PACKETBUFFERMAXSIZE];	// 单捞鸥啊 努锭 贸府 滚欺. Recv滚欺狼 4硅.
			_RecvIoContext()
			{
				memset(AcceptBuf,0,sizeof(AcceptBuf));
				memset(RecvBuf,0,sizeof(RecvBuf));
				memset(OnRecvBuf,0,sizeof(OnRecvBuf));
			}
		} RECVIOCONTEXT, *PRECVIOCONTEXT;

		typedef struct _SendIoContext
		{
			void* pThisPoint;
			volatile long		*iSendCnt;	// send Ref Count
			_SendIoContext()
			{
//				memcpy( AcceptBuf, o.AcceptBuf, bs );
			}
		} SENDIOCONTEXT, *PSENDIOCONTEXT;

		class CMOVERLAPPED: public OVERLAPPED
		{
		public:
			int addrlen;

			DataState	eRecvState;			//	Recv茄 单捞鸥 贸府甫 困茄 敲贰弊.
			int			iMoreRecv;			//	Recv茄 单捞鸥啊 促 给罐篮版快俊 倔付唱 歹 罐酒具且 荤捞令
			State		eState;				//	荤侩磊啊 楷搬登菌阑锭 惑怕 recv , accept 
			SOCKET		s;					//	家南 勤甸
			DWORD		dwBytesTransfer;	//	府胶宏等 官捞飘 肮荐
			sockaddr_in Local, ClientAddr;	//	肺拿,努扼捞攫飘 IP Address

			PRECVIOCONTEXT	pRecvContext;	//
			SENDIOCONTEXT	SendIoContext;	//	器牢磐 屈捞 酒聪促.. send绰 弊成 棱酒 林菌促.
			short		sOverlappedID;		//	坷滚乏 硅凯 ID
			DWORD		dwRandomID;			//	荤侩磊付促 罚待 绊蜡 酒捞叼
			unsigned short sReplayAttack;	//  鞍篮 菩哦 滴锅篮 倾侩窍瘤 臼绰促.. (歹 碍拳窍咯具 窍唱 蓖满促...)
			WSABUF recvBufferDescriptor;
			WSABUF sendBufferDescriptor;
			DWORD recvFlags;				// needed by WSARecv()

			int			  iRecvQueueNum;	// 霸烙辑滚俊辑 绢蠢钮俊 甸绢哎瘤甫 搬沥茄促. 叼弃飘绰 0
			StateServer	  iAcceptServer;	// 立加茄 辑滚啊 绢恫 辑滚牢瘤 八祸.
			int			  iAccountID;		// 拌沥狼 绊蜡 侥喊 锅龋.
			char		  cAccountName[17];	// 拌沥 捞抚..
			void *		  pKeyComplete;		
			int			  iCharIndex;		// 某腐磐狼 绊蜡 锅龋.
			short		  sCharMemIndex;	// 某腐磐 单捞鸥啊 甸绢乐绰 牢郸胶 锅龋
			short		  sAccMemIndex;		// 拌沥 单捞鸥啊 甸绢乐绰 牢郸胶 锅龋
			int			  iCharNodeIndex;	// 某腐磐 甘畴靛 牢郸胶 锅龋. 捞吧风 甘俊 拱妨 乐绰巴阑 八祸且荐 乐促.
			int			  *iTileIndex;		// 甘俊 割锅掳 鸥老俊 拱妨乐绰瘤 舅荐 乐促.. 捞蔼篮 咯扁辑 例措 write且荐 绝促.
			DetailStateOV iDetailServer;	// 捞 坷滚乏 备炼眉啊 绢蠢 辑滚俊 楷搬等 巴牢瘤俊措茄 疙技.

			//? test侩 函荐.窃荐 昏力秦具 茄促.
			DWORD	dwTimeTest;
			int		iMsgCntTest;
			int		iTestDebug;
			int		iTestDebug1;



			CMOVERLAPPED(): iRecvQueueNum(0),iMoreRecv(0) ,eState( eCLOSE ),eRecvState ( eNormalRecv ), s( SOCKET_ERROR ),addrlen(sizeof sockaddr_in + 16)
			{ 
				iTileIndex = NULL;
				sCharMemIndex = 0;
				Internal = InternalHigh = Offset = OffsetHigh = 0; hEvent = 0; 
				SendIoContext.pThisPoint = NULL;
				SendIoContext.iSendCnt = NULL;
				iMsgCntTest = 0;
				iCharIndex = 0;
				iDetailServer = eClientOV;
				iTestDebug1 = 0;
			}
            
			CMOVERLAPPED( const CMOVERLAPPED &o )
			{
				iMoreRecv = o.iMoreRecv;
				eRecvState = o.eRecvState;
				eState = o.eState;
				s = o.s;
				dwBytesTransfer = o.dwBytesTransfer;
				Local = o.Local;
				ClientAddr = o.ClientAddr;
				
				//				memcpy( MatrixCore::Network::CMOVERLAPPED::pRecvContext->AcceptBuf, o.AcceptBuf, bs );

			}
			~CMOVERLAPPED() { } 

			void InitOverLapped()
			{
				iMoreRecv = 0;
				eRecvState = eNormalRecv;
				eState = eACCEPT;
				sCharMemIndex = 0;		// 檬扁拳
				sAccMemIndex = 0;
				iTileIndex = NULL;
				iCharNodeIndex = 0;
				pKeyComplete = NULL;
				iAccountID = 0;

				if(eServer != iAcceptServer && eServerClient != iAcceptServer)
				{
					iAcceptServer = eClient;
				}
				else
				{
					iAcceptServer = eServer;
				}
			}
		};
	}
}

#endif

⌨️ 快捷键说明

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