DBSvr.h
上传用户:szopptop
上传日期:2013-04-23
资源大小:1047k
文件大小:3k
源码类别:

模拟服务器

开发平台:

Visual C++

  1. #pragma once
  2. #define PACKET_KEEPALIVE "%++$"
  3. #define LOGPARAM_STR 1
  4. #define LOGPARAM_INT 2
  5. class CServerInfo
  6. {
  7. public:
  8. SOCKET m_sock;
  9. // For Overlapped I/O
  10. OVERLAPPED Overlapped;
  11. WSABUF DataBuf;
  12. INT nOvFlag;
  13. CHAR Buffer[DATA_BUFSIZE];
  14. CHAR RemainBuff[DATA_BUFSIZE];
  15. INT nRemainBuffLen;
  16. };
  17. class CUserInfo
  18. {
  19. public:
  20. SOCKET sock;
  21. TCHAR szSockHandle[4];
  22. TCHAR szUserID[11]; // User ID
  23. TCHAR szAddress[20]; // User's local address 
  24. BYTE btPayMode;
  25. int nClientVersion;
  26. int nCertification;
  27. BOOL fVersionAccept;
  28. BOOL fSelServerOk;
  29. };
  30. class CGateInfo
  31. {
  32. public:
  33. SOCKET sock;
  34. CWHList<CUserInfo*> xUserInfoList;
  35.   
  36. WSABUF DataBuf;
  37. CHAR Buffer[DATA_BUFSIZE];
  38. int bufLen;
  39. CWHQueue m_GateQ;
  40. public:
  41. void ReceiveOpenUser(char *pszPacket);
  42. void ReceiveCloseUser(char *pszPacket);
  43. void ReceiveSendUser(char *pszPacket);
  44. void QueryCharacter(SOCKET s, char *pszPacket);
  45. void DeleteExistCharacter(SOCKET s, _LPTCREATECHR lpTCreateChr);
  46. void MakeNewCharacter(SOCKET s, _LPTCREATECHR lpTCreateChr);
  47. void GetSelectCharacter(SOCKET s, char *pszPacket);
  48. void SendToGate(SOCKET cSock, char *pszPacket);
  49. __inline void SendKeepAlivePacket() { send(sock, PACKET_KEEPALIVE, sizeof(PACKET_KEEPALIVE), 0); }
  50. // ORZ:
  51. CGateInfo()
  52. {
  53. bufLen = 0;
  54. }
  55. int  Recv()
  56. {
  57. return recv( sock, Buffer + bufLen, DATA_BUFSIZE - bufLen, 0 );
  58. }
  59. bool HasCompletionPacket()
  60. {
  61. return memchr( Buffer, '$', bufLen ) ? true : false;
  62. }
  63. // recv 滚欺俊辑 肯己等 窍唱狼 菩哦阑 惶酒辰促.
  64. char * ExtractPacket( char *pPacket )
  65. {
  66. int packetLen = (char *) memchr( Buffer, '$', bufLen ) - Buffer + 1;
  67. memcpy( pPacket, Buffer, packetLen );
  68. memmove( Buffer, Buffer + packetLen, DATA_BUFSIZE - packetLen );
  69. bufLen -= packetLen;
  70. return pPacket + packetLen;
  71. }
  72. };
  73. // ORZ:
  74. struct GAMESERVERINFO
  75. {
  76. int  index;
  77. char name[50];
  78. char ip[50];
  79. int  connCnt; // 立加 荐 包府
  80. CServerInfo* pServerInfo;
  81. };
  82. typedef struct tag_TSENDBUFF
  83. {
  84. CServerInfo* pServerInfo;
  85. int nCertification;
  86. _TDEFAULTMESSAGE DefMsg;
  87. _TLOADHUMAN HumanLoad;
  88. BYTE *lpbtAddData;
  89. BYTE *lpbtAddData2;
  90. } _TSENDBUFF, *_LPTSENDBUFF;
  91. typedef struct tag_TGATESENDBUFF
  92. {
  93. SOCKET sock;
  94. char szData[1024];
  95. }_TGATESENDBUFF, *_LPTGATESENDBUFF;
  96. void InsertLogMsg(UINT nID);
  97. void InsertLogMsg(LPTSTR lpszMsg);
  98. void InsertLogMsgParam(UINT nID, void *pParam, BYTE btFlags = LOGPARAM_STR);