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

模拟服务器

开发平台:

C/C++

  1. // S3Server.cpp : Defines the entry point for the application.
  2. #include "KEngine.h"
  3. #include "..MultiServerHeavenInterfaceIServer.h"
  4. #include "SwordOnLineServer.h"
  5. #include "ServerLocalControlWnd.h"
  6. /*
  7.  * Add this macro by liupeng on 2003.4.22
  8.  * This macro is helper that can judge some legal character
  9.  */
  10. #define _private_IS_SPACE(c)   ((c) == ' ' || (c) == 'r' || (c) == 'n' || (c) == 't' || (c) == 'x')
  11. #define IS_SPACE(c) _private_IS_SPACE(c)
  12. KSwordOnLineSever l_Server;
  13. int APIENTRY WinMain(HINSTANCE hInstance,
  14.                      HINSTANCE hPrevInstance,
  15.                      LPSTR     lpCmdLine,
  16.                      int       nCmdShow)
  17. {
  18. if (!l_Server.Init())
  19. return 0;
  20. if (KServerLocalControlWnd::Create(hInstance, &l_Server) == false)
  21. return 0;
  22. /*
  23.  * Add this funtion by liupeng on 2003.4.22
  24.  * We can find some error when start a console tracer
  25.  */
  26. #ifdef TRUE
  27. bool bOpenTracer = false;
  28.     while( lpCmdLine[0] == '-' || lpCmdLine[0] == '/' )
  29.     {
  30.         lpCmdLine++;
  31.         switch ( *lpCmdLine++ )
  32.         {
  33. case 'c':
  34.         case 'C':
  35.             bOpenTracer = true;
  36.             break;
  37.         }
  38.         while( IS_SPACE( *lpCmdLine ) )
  39.         {
  40.             lpCmdLine++;
  41.         }
  42.     }
  43. if ( bOpenTracer ) 
  44. {
  45. AllocConsole();
  46. }
  47. #endif // End of this function
  48. //----消息循环----
  49. MSG Msg;
  50. while (true)
  51. {
  52. if (PeekMessage(&Msg, NULL, 0, 0, PM_NOREMOVE))
  53. {
  54. if (!GetMessage(&Msg, NULL, 0, 0))
  55. break;
  56. TranslateMessage(&Msg);
  57. DispatchMessage(&Msg);
  58. }
  59. else if(l_Server.Breathe())
  60. KServerLocalControlWnd::UpdateData();
  61. }
  62. #ifdef TRUE
  63. if ( bOpenTracer )
  64. {
  65. FreeConsole();
  66. }
  67. #endif
  68. return 0;
  69. }
  70. void __stdcall ServerCallBack(LPVOID lpParam, const unsigned long &ulnID, const unsigned long &uEventType)
  71. {
  72. if (ulnID > l_Server.GetMaxPlayer())
  73. return;
  74. switch(uEventType)
  75. {
  76. case enumClientConnectCreate:
  77. //m_NetConnectStatus[ulnID] = NET_CONNECTED;
  78. l_Server.SetNetStatus(ulnID, NET_CONNECTED);
  79. break;
  80. case enumClientConnectClose:
  81. l_Server.SetNetStatus(ulnID, NET_UNCONNECT);
  82. break;
  83. default:
  84. break;
  85. }
  86. }