KClient.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( 10, 1024 );
  20. client.ConnectTo( "127.0.0.1", 5001 );
  21. client.StartConnections();
  22. char szBuffer[1000] = {0};
  23. memset( szBuffer, '.', 1000 );
  24. memcpy( szBuffer, "BEGIN", strlen("BEGIN") );
  25. memcpy( szBuffer+1000-strlen("END"), "END", 3 );
  26. client.Write( szBuffer, 1000 );
  27. CManualResetEvent shutdownEvent(_T("OnlineGameClientShutdown"), false);
  28. CManualResetEvent pauseResumeEvent(_T("OnlineGameClientPauseResume"), false);
  29. HANDLE handlesToWaitFor[2];
  30. handlesToWaitFor[0] = shutdownEvent.GetEvent();
  31. handlesToWaitFor[1] = pauseResumeEvent.GetEvent();
  32. bool accepting = true;
  33. bool done = false;
  34. while (!done)
  35. {
  36. DWORD waitResult = ::WaitForMultipleObjects(2, handlesToWaitFor, false, INFINITE);
  37. if (waitResult == WAIT_OBJECT_0)
  38. {
  39. done = true;
  40. }
  41. else if (waitResult == WAIT_OBJECT_0 + 1)
  42. {
  43. if (accepting)
  44. {
  45. client.StopConnections();
  46. }
  47. else
  48. {
  49. client.StartConnections();
  50. }
  51. accepting = !accepting;
  52. }
  53. else
  54. {
  55. Output(_T("Unexpected result from WaitForMultipleObjects - exiting"));
  56. done = true;
  57. }
  58. }
  59. client.WaitForShutdownToComplete();
  60. }
  61. catch(const CException &e)
  62. {
  63. Output(_T("Exception: ") + e.GetWhere() + _T(" - ") + e.GetMessage());
  64. }
  65. catch(...)
  66. {
  67. Output(_T("Unexpected exception"));
  68. }
  69. return 0;
  70. }