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

模拟服务器

开发平台:

C/C++

  1. // ClientSocket.h: interface for the CClientSocket class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #if !defined(AFX_CLIENTSOCKET_H__C524C6B2_0AA8_4E6C_9FA0_09F316FCA61E__INCLUDED_)
  5. #define AFX_CLIENTSOCKET_H__C524C6B2_0AA8_4E6C_9FA0_09F316FCA61E__INCLUDED_
  6. #if _MSC_VER > 1000
  7. #pragma once
  8. #endif // _MSC_VER > 1000
  9. #include <winsock2.h>
  10. #include "ESClientException.h"
  11. #include "ESClientUtils.h"
  12. #include "ESClientManualResetEvent.h"
  13. #include "GameClient.h"
  14. //[ Include in ...Protocol
  15. #include "ProtocolProtocol.h"
  16. class S3PDBSocketParser;
  17. class CClientSocket  
  18. {
  19. public:
  20. typedef struct tag_SERVERPARAM
  21. {
  22. SOCKET s;
  23. CGameClient* pS;
  24. }_SERVERPARAM, *_PSERVERPARAM;
  25. typedef struct tag_RECVPARAM
  26. {
  27. SOCKET s;
  28. CGameClient* pS;
  29. IBYTE* pRecvBuf;
  30. int iRecvBufSize;
  31. struct sockaddr_in from;
  32. int fromlen;
  33. int iResult;
  34. }_RECVPARAM, *_PRECVPARAM;
  35. typedef struct tag_USERINFO
  36. {
  37. char szHostAddr[16];
  38. char szUserName[def_DBUSERNAME_MAX_LEN+1];
  39. char szPassword[def_DBPASSWORD_MAX_LEN+1];
  40. short siPriority;
  41. BOOL bLoggedin;
  42. char szLastLoginTime[20];
  43. char szLastLogoutTime[20];
  44. }_USERINFO, *_PUSERINFO;
  45. enum { DBLOGINSTRUCT_SIZE = KLOGINSTRUCTHEADSIZE + 32 };
  46. typedef DWORD ( CALLBACK *LOGINCALLBACK )( DWORD dwLoginResult, DWORD dwCustomParameter );
  47. static CClientSocket* Instance( short* psiPort = NULL );
  48. static CClientSocket* GetInstance();
  49. static void ReleaseInstance();
  50. static BOOL IncludeSomeBitValue( DWORD dwMatrix, DWORD dwSomeBitValue );
  51. protected:
  52. static CClientSocket* m_pInstance;
  53. public:
  54. virtual ~CClientSocket();
  55. BOOL Start();
  56. BOOL Stop();
  57. BOOL SetServerAddr( LPCTSTR lpszIPAddr, short siPort );
  58. BOOL SetServerAddr( DWORD dwIPAddr, short siPort );
  59. BOOL RemoteQuery( _PDBLOGINSTRUCT pParam,
  60. CClientSocket::LOGINCALLBACK LoginCallbackFun,
  61. DWORD dwCustomParam,
  62. DWORD dwMilliseconds );
  63. BOOL Connect( LPCTSTR lpszAddr, short siPort );
  64. protected:
  65. CClientSocket();
  66. BOOL InitWinSocket();
  67. BOOL UninitWinSocket();
  68. BOOL HasValidSocket();
  69. BOOL CreateSocket( short siPort );
  70. BOOL ReleaseSocket();
  71. DWORD Recvfrom( char FAR* buf, int len, DWORD dwMilliseconds );
  72. SOCKET m_s; // Not used
  73. CGameClient* m_pS;
  74. _SERVERPARAM m_serverParam;
  75. _RECVPARAM m_recvParam;
  76. HANDLE m_hServer;
  77. struct sockaddr_in m_serverAddr;
  78. };
  79. #endif // !defined(AFX_CLIENTSOCKET_H__C524C6B2_0AA8_4E6C_9FA0_09F316FCA61E__INCLUDED_)