KSOServer.h
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:4k
源码类别:

模拟服务器

开发平台:

C/C++

  1. #ifndef KSOServerH
  2. #define KSOServerH
  3. #include <map>
  4. #include "KEngine.h"
  5. #include "IClient.h"
  6. #ifndef _STANDALONE
  7. #include "RainbowInterface.h"
  8. #include "HeavenInterface.h"
  9. #include "....CoresrcCoreServerShell.h"
  10. #include "UsesWinsock.h"
  11. #include "Buffer.h"
  12. using OnlineGameLib::Win32::CPackager;
  13. #else
  14. #include "CoreServerShell.h"
  15. #endif
  16. #include "IServer.h"
  17. #include "KTimer.h"
  18. #include "KTransferUnit.h"
  19. enum NetStatus
  20. {
  21. enumNetUnconnect = 0,
  22. enumNetConnected,
  23. };
  24. struct GameStatus 
  25. {
  26. GameStatus() 
  27. {
  28. nGameStatus = 0; 
  29. nNetStatus = 0;
  30. nExchangeStatus = 0;
  31. nPlayerIndex = 0;
  32. nSendPingTime = 0;
  33. nReplyPingTime = 0;
  34. };
  35. int nPlayerIndex;
  36. int nGameStatus;
  37. int nNetStatus;
  38. int nExchangeStatus;
  39. int nSendPingTime;
  40. int nReplyPingTime;
  41. } ;
  42. class KSwordOnLineSever
  43. {
  44. private:
  45. #ifdef _STANDALONE
  46. ZBuffer *net_buffer;
  47. #endif
  48. int m_nMaxPlayerCount;
  49. int m_nPrecision;
  50. static const int m_snMaxBuffer;
  51. static const int m_snBufferSize;
  52. int m_nMaxPlayer;
  53. int m_nGameLoop;
  54. int m_nServerPort;
  55. int m_nGatewayPort;
  56. int m_nDatabasePort;
  57. int m_nTransferPort;
  58. int m_nChatPort;
  59. int m_nTongPort;
  60. DWORD m_dwIntranetIp;
  61. DWORD m_dwInternetIp;
  62. char m_szGatewayIP[16];
  63. char m_szDatabaseIP[16];
  64. char m_szTransferIP[16];
  65. char m_szChatIP[16];
  66. char m_szTongIP[16];
  67. BOOL m_bIsRunning;
  68. // BOOL m_bSaveFlag;
  69. // int m_nSaveCount;
  70. IServer* m_pServer;
  71. IClient* m_pGatewayClient;
  72. IClient* m_pDatabaseClient;
  73. IClient* m_pTransferClient;
  74. IClient* m_pChatClient;
  75. IClient* m_pTongClient;
  76. GameStatus* m_pGameStatus;
  77. struct iCoreServerShell* m_pCoreServerShell;
  78. KTimer m_Timer;
  79. typedef std::map<DWORD, KTransferUnit*> IP2CONNECTUNIT;
  80. IP2CONNECTUNIT m_mapIp2TransferUnit;
  81. public:
  82. KSwordOnLineSever();
  83. ~KSwordOnLineSever();
  84. BOOL Init();
  85. BOOL Breathe();
  86. int GetNetStatus(const unsigned long lnID);
  87. void SetNetStatus(const unsigned long lnID, NetStatus nStatus);
  88. void SetRunningStatus(BOOL bStatus);
  89. void Release();
  90. private:
  91. void MessageLoop();
  92. void GatewayMessageProcess(const char* pChar, size_t nSize);
  93. void DatabaseMessageProcess(const char* pChar, size_t nSize);
  94. void DatabaseLargePackProcess(const char* pChar, size_t nSize);
  95. void TransferMessageProcess(const char* pChar, size_t nSize);
  96. void PlayerMessageProcess(const unsigned long lnID, const char* pChar, size_t nSize);
  97. void GatewayLargePackProcess(const void *pData, size_t dataLength);
  98. void GatewaySmallPackProcess(const void *pData, size_t dataLength);
  99. void GatewayBoardCastProcess(const char* pData, size_t dataLength);
  100. void TransferLargePackProcess(const void *pData, size_t dataLength, KTransferUnit* pUnit);
  101. void TransferSmallPackProcess(const void *pData, size_t dataLength, KTransferUnit* pUnit);
  102. void TransferAskWayMessageProcess(const char *pData, size_t dataLength);
  103. void TransferLoseWayMessageProcess(const char *pData, size_t dataLength);
  104. void ChatMessageProcess(const char *pChar, size_t nSize);
  105. void ChatGroupMan(const void *pData, size_t dataLength);
  106. void ChatSpecMan(const void *pData, size_t dataLength);
  107. BOOL ConformAskWay(const void* pData, int nSize, DWORD *pdwID);
  108. void MainLoop();
  109. int ProcessLoginProtocol(const unsigned long lnID, const char* pData, size_t dataLength);
  110. BOOL ProcessSyncReplyProtocol(const unsigned long lnID, const char* pData, size_t dataLength);
  111. void PingClient(const unsigned long lnID);
  112. void ProcessPingReply(const unsigned long lnID, const char* pData, size_t dataLength);
  113. BOOL SendGameDataToClient(const unsigned long lnID, const int nPlayerIndex);
  114. void SavePlayerData();
  115. BOOL SavePlayerData(int nIndex, bool bUnLock);
  116. void ExitAllPlayer();
  117. void PlayerLogoutGateway();
  118. void PlayerExchangeServer();
  119. BOOL GetLocalIpAddress(DWORD *pIntranet, DWORD *pInternet);
  120. // 帮会协议处理( relay 发过来的协议)
  121. void TongMessageProcess(const char *pChar, size_t nSize);
  122. // 帮会协议处理(客户端通过帮会扩展协议发过来的协议)
  123. void ProcessPlayerTongMsg(const unsigned long nPlayerIdx, const char* pData, size_t dataLength);
  124. BOOL CheckPlayerID(unsigned long netidx, DWORD nameid);
  125. };
  126. #endif