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

模拟服务器

开发平台:

C/C++

  1. // testESClient.cpp : Defines the entry point for the console application.
  2. //
  3. #include <winsock2.h>
  4. #include "ESClientException.h"
  5. #include "ESClientUtils.h"
  6. #include "ESClientManualResetEvent.h"
  7. #include "GameClient.h"
  8. //[ Include in ...Protocol
  9. #include "ProtocolProtocol.h"
  10. //]
  11. using OnlineGameLib::Win32::_tstring;
  12. using OnlineGameLib::Win32::CException;
  13. using OnlineGameLib::Win32::Output;
  14. using OnlineGameLib::Win32::CManualResetEvent;
  15. int main(int argc, char* argv[])
  16. {
  17. try
  18. {
  19. CGameClient client(
  20. "127.0.0.1",
  21. 5001,
  22. 10,
  23. 1024
  24. );
  25. client.Start();
  26. client.StartConnections();
  27. char szBuffer[1000] = {0};
  28. memset( szBuffer, '.', 1000 );
  29. memcpy( szBuffer, "BEGIN", strlen("BEGIN") );
  30. memcpy( szBuffer+1000-strlen("END"), "END", 3 );
  31. client.Write( szBuffer, 1000 );
  32. CManualResetEvent shutdownEvent(_T("OnlineGameClientShutdown"), false);
  33. CManualResetEvent pauseResumeEvent(_T("OnlineGameClientPauseResume"), false);
  34. HANDLE handlesToWaitFor[2];
  35. handlesToWaitFor[0] = shutdownEvent.GetEvent();
  36. handlesToWaitFor[1] = pauseResumeEvent.GetEvent();
  37. bool accepting = true;
  38. bool done = false;
  39. while (!done)
  40. {
  41. DWORD waitResult = ::WaitForMultipleObjects(2, handlesToWaitFor, false, INFINITE);
  42. if (waitResult == WAIT_OBJECT_0)
  43. {
  44. done = true;
  45. }
  46. else if (waitResult == WAIT_OBJECT_0 + 1)
  47. {
  48. if (accepting)
  49. {
  50. client.StopConnections();
  51. }
  52. else
  53. {
  54. client.StartConnections();
  55. }
  56. accepting = !accepting;
  57. }
  58. else
  59. {
  60. Output(_T("Unexpected result from WaitForMultipleObjects - exiting"));
  61. done = true;
  62. }
  63. }
  64. client.WaitForShutdownToComplete();
  65. }
  66. catch(const CException &e)
  67. {
  68. Output(_T("Exception: ") + e.GetWhere() + _T(" - ") + e.GetMessage());
  69. }
  70. catch(...)
  71. {
  72. Output(_T("Unexpected exception"));
  73. }
  74. return 0;
  75. }