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

📄 mirsocket.h

📁 这是传奇代码私服之二
💻 H
字号:
#if !defined(_MIRSOCKET_H_)
#define _MIRSOCKET_H_

#pragma once

//#include <winsock2.h>
// MirSocket.h : header file
//
#define	MSGBUFFERSIZE	2048
#define	MIRVERSION	"<mir152>"
#define MSGHEADERSIZE 12
#define	MSGLENGTH	1024

typedef struct
{
	union
	{
		DWORD	dwFlag;
		struct
		{
			WORD	wa;
			WORD	wb;
		};
	};

	WORD	wCmd;
	WORD	w1;
	WORD	w2;
	WORD	w3;
	char	data[1024];
}MMSG;

enum enmGameStatus
{
	MGS_NOCONNECTION,
	MGS_GATECONNECTING,
	MGS_GATECONNECTED,
	MGS_WAITINGCHECKINFO,
	MGS_MAKECLIENTINFO,
	MGS_WAITINGCHECKPASS,
	MGS_CLIENTCHECKPASSED,
	MGS_MODIFYPASSWORDWAIT,
	MGS_REGNEWACCOUNTWAIT,
	MGS_LOGINWAITING,
	MGS_SELECTSERVER,
	MGS_WAITFORSELCHARADDRESS,
	MGS_GOTSELCHARADDRESS,
	MGS_SELCHARCONNECTED,
	MGS_WAITFORSELCHARVERIFY,
	MGS_WAITFORSELCHAR,
	MGS_WAITFORGAMESERVERADDRESS,
	MGS_GOTGAMESERVERADDRESS,
	MGS_GAMESERVERCONNECTING,
	MGS_GAMESERVERCONNECTED,
	MGS_WAITFORGAMESERVERVERIFY,
	MGS_WAITFORENTERGAME,
	MGS_ENTEREDGAME,
	MGS_GAMEFINISHED
};

enum enmAbortReason
{
	AR_CONNECT,
	AR_SEND,
	AR_RECEIVE,
	AR_CLIENTNOTPASS,
	AR_BADPASSWORD,
	AR_ACCOUNTNOTEXIST,
	AR_RETRYTOMANYTIMES,
	AR_ACCOUNTINUSE,
	AR_NOTGETSELCHARIP,
	AR_GETCHRLST,
	AR_INVALIDCHRNUMBER,
	AR_CANNOTGETGAMESERVERADDRESS,
	AR_UNKNOW
};


class CMirSocket //: public CSocket
{
public:
	CMirSocket();
	virtual ~CMirSocket();

protected:
	SOCKET m_Socket;
	char * m_RecvBuffer;
	char * m_ConvBuffer;
	char * m_SendBuffer;
	MMSG msg;
	long m_GameState;
	char m_msgflag;

public:
	BOOL IOCtl( long lCommand, DWORD* lpArgument );
	virtual int Receive(void* lpBuf, int nBufLen, int nFlags = 0);
	virtual void Close();
	virtual int Send(const void* lpBuf, int nBufLen, int nFlags = 0);
	BOOL Connect(LPCTSTR ip,unsigned short port);
	BOOL Create();
	int GetString(char *string);
	char GetMsgFlag();
	int SendString(char * string );
	int SendMsg(MMSG * pmsg );
	int SendGateMsg(MMSG * pmsg );
	int RecvString(char * string, int maxlen );
	int RecvMsg(MMSG * pmsg );
	int RecvGateMsg(MMSG * pmsg );

	static char int2hex(int v);
	static int hex2int(char c);
	static char ucase(char c);

	static int CodeGameCode( BYTE * in, int size, BYTE * out );
	static int CodeGateCode(char *in, char *out);
	static int UnGameCode(char*p, BYTE*out);
	static int UnGateCode(char *in, char *out);
	static int UnNameCode( char * in, char * out );

	CString	m_StringList[20];
};

#endif // !defined(_MIRSOCKET_H_)

⌨️ 快捷键说明

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