Advertisement
Guest User

php connect to field server ( ACE ONLINE)

a guest
Nov 13th, 2021
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.49 KB | None | 0 0
  1.  
  2. =====================================================================================================
  3. FieldPhpWebIOCP.cpp
  4. =====================================================================================================
  5. #include "stdafx.h"
  6. #include "FieldPhpWebIOCP.h"
  7. #include "FieldPhpWebIOCPSocket.h"
  8. #include "FieldGlobal.h"
  9. #include "AtumError.h"
  10.  
  11.  
  12. CFieldPHPWebIOCP::CFieldPHPWebIOCP(int nPort, char *szLocalIP) :CIOCP(0, SIZE_MAX_FIELDWEBSERVER_SESSION, nPort, szLocalIP, ST_FIELD_WEB_SERVER)
  13. {
  14.     CFieldPHPWebIOCPSocket::ms_pFieldWebIOCP        = this;
  15.    
  16.     CFieldPHPWebIOCPSocket * pFieldWebIOCPSocket = new CFieldPHPWebIOCPSocket[m_dwArrayClientSize];
  17.     m_pArrayIOCPSocket = pFieldWebIOCPSocket;
  18.     for(int i = 0; i < m_dwArrayClientSize; i++)
  19.     {
  20.         m_ArrayClient[i] = &pFieldWebIOCPSocket[i];
  21.         m_ArrayClient[i]->InitIOCPSocket(i);
  22.     }
  23.  
  24.     m_pFieldIOCP                = NULL;
  25. }
  26.  
  27. CFieldPHPWebIOCP::~CFieldPHPWebIOCP()
  28. {
  29.     ListenerClose();
  30.     IOCPClean();
  31.     memset(m_ArrayClient, 0x00, sizeof(CIOCPSocket*) * COUNT_MAX_SOCKET_SESSION);
  32.     if (NULL != m_pArrayIOCPSocket)
  33.     {
  34.         delete[] (CFieldPHPWebIOCPSocket*)m_pArrayIOCPSocket;
  35.         m_pArrayIOCPSocket = NULL;
  36.     }
  37.  
  38. }
  39.  
  40. BOOL CFieldPHPWebIOCP::IOCPInit()
  41. {
  42.     g_pFieldGlobal->WriteSystemLogEX(TRUE, "  [Notify] CFieldPHPWebIOCP::IOCPInit# 10000 \r\n");
  43.  
  44.     g_pFieldGlobal->WriteSystemLogEX(TRUE, "  [Notify] CFieldPHPWebIOCP::IOCPInit# 16000 CFieldWebTickManager::InitTickManager# !\r\n");
  45.  
  46.     g_pFieldGlobal->WriteSystemLogEX(TRUE, "  [Notify] CFieldPHPWebIOCP::IOCPInit# 20000 end !\r\n");
  47.  
  48.     CIOCP::IOCPInit();
  49.  
  50.     return TRUE;
  51. }
  52.  
  53. void CFieldPHPWebIOCP::SetFieldIOCP(CFieldIOCP *pFieldIOCP)
  54. {
  55.     m_pFieldIOCP = pFieldIOCP; 
  56. }
  57.  
  58. void CFieldPHPWebIOCP::IOCPClean(void)
  59. {
  60.     CIOCP::IOCPClean();
  61.  
  62. }
  63.  
  64. SThreadInfo* CFieldPHPWebIOCP::CheckIOCPThread(DWORD i_dwThreadIdToExclude)
  65. {
  66.     SThreadInfo* pTInfo = CIOCP::CheckIOCPThread(i_dwThreadIdToExclude);
  67.  
  68.     if (pTInfo
  69.         && !m_MonitorIOCPSocketPtrVector.empty())
  70.     {
  71.     }
  72.  
  73.     return pTInfo;
  74. }
  75.  
  76. =====================================================================================================
  77. FieldPhpWebIOCP.h
  78. =====================================================================================================
  79. #if !defined(AFX_PHPAUTHIOCP_H__89992FF9_ADF7_4FFF_A639_F9BC79F85619__INCLUDED_)
  80. #define AFX_PHPAUTHIOCP_H__89992FF9_ADF7_4FFF_A639_F9BC79F85619__INCLUDED_
  81.  
  82. #if _MSC_VER > 1000
  83. #pragma once
  84. #endif // _MSC_VER > 1000
  85.  
  86. #include "stdafx.h"
  87. #include "IOCP.h"
  88. #include "ServerGroup.h"
  89.  
  90. class CFieldIOCP;
  91. class CFieldPHPWebIOCPSocket;
  92.  
  93. class CFieldPHPWebIOCP : public CIOCP
  94. {
  95.     friend class CFieldPHPWebIOCPSocket;
  96.  
  97. public:
  98.     CFieldPHPWebIOCP(int nPort, char *szLocalIP = "127.0.0.1");
  99.     virtual ~CFieldPHPWebIOCP();
  100.  
  101. public:
  102.  
  103.  
  104. public:
  105.     inline CFieldPHPWebIOCPSocket* GetFieldWebIOCPSocket(int idx);
  106.  
  107. public:
  108.     virtual BOOL IOCPInit();
  109.     virtual void IOCPClean(void);
  110.     virtual SThreadInfo* CheckIOCPThread(DWORD i_dwThreadIdToExclude);
  111.  
  112.  
  113.     void SetFieldIOCP(CFieldIOCP *pFieldIOCP);
  114.  
  115. private:
  116.     CFieldIOCP                      *m_pFieldIOCP;
  117. };
  118.  
  119. CFieldPHPWebIOCPSocket* CFieldPHPWebIOCP::GetFieldWebIOCPSocket(int idx)
  120. {
  121.     return (CFieldPHPWebIOCPSocket*)GetIOCPSocket(idx);
  122. }
  123.  
  124. #endif // !defined(AFX_PHPAUTHIOCP_H__89992FF9_ADF7_4FFF_A639_F9BC79F85619__INCLUDED_)
  125.  
  126.  
  127. =====================================================================================================
  128. FieldPhpWebIOCPSocket.cpp
  129. =====================================================================================================
  130.  
  131. #include "stdafx.h"
  132. #include "FieldPhpWebIOCPSocket.h"
  133. #include "FieldPhpWebIOCP.h"
  134. #include "FieldGlobal.h"
  135. #include "AtumError.h"
  136. #include "FieldIOCP.h"
  137. #include "FieldIOCPSocket.h"
  138.  
  139.  
  140. CFieldPHPWebIOCP        *CFieldPHPWebIOCPSocket::ms_pFieldWebIOCP = NULL;
  141.  
  142. CFieldPHPWebIOCPSocket::CFieldPHPWebIOCPSocket()
  143. {
  144.     m_PeerSocketType    = ST_INVALID_TYPE;
  145.  
  146. }
  147.  
  148. CFieldPHPWebIOCPSocket::~CFieldPHPWebIOCPSocket()
  149. {
  150. }
  151.  
  152. BOOL CFieldPHPWebIOCPSocket::OnRecvdPacketFieldWebServer(const char* pPacket, int nLength, BYTE nSeq, char* pPeerIP, int nPeerPort, SThreadInfo *i_pThreadInfo)
  153. {
  154.  
  155.    
  156.     CFieldIOCP* pFieldIOCP = GetFieldIOCP();
  157.    
  158.     // you can get current online player by pFieldIOCP -> get socket by account or uniquenumber bla bla
  159.     // put function that your want here
  160.     // pPacket = your data that send from php
  161.     // nLength = size of your data
  162.  
  163.     return TRUE;
  164. }
  165.  
  166. void CFieldPHPWebIOCPSocket::OnConnect(void)
  167. {
  168.     if (0 != strncmp(g_pFieldGlobal->GetIPLocal(), m_szPeerIP, strlen(m_szPeerIP)))
  169.     {
  170.         Close(0x01000);
  171.         return;
  172.     }
  173.  
  174.     char szSystemLog[256];
  175.     sprintf(szSystemLog, "Socket Connect Web SocketIndex[%3d] PeerIP[%15s] Port[%4d]\r\n",
  176.         this->GetClientArrayIndex(), m_szPeerIP, m_nPeerPort);
  177.     g_pGlobal->WriteSystemLog(szSystemLog);
  178.     DBGOUT(szSystemLog);
  179.  
  180.  
  181.  
  182.     m_PeerSocketType        = ST_INVALID_TYPE;
  183.  
  184.     CIOCPSocket::OnConnect();
  185. }
  186.  
  187. void CFieldPHPWebIOCPSocket::OnClose(int reason)
  188. {
  189.     char szSystemLog[1024];
  190.  
  191.     sprintf(szSystemLog, "Socket Closed Web SocketIndex[%3d] SocketType[%d] PeerIP[%15s] Port[%4d] MaxWriteBufCounts[%4d] ==> reason %d[%#08X]\r\n",
  192.         this->GetClientArrayIndex(), m_PeerSocketType, m_szPeerIP, m_nPeerPort, m_nMaxWriteBufCounts, reason, reason);
  193.     g_pGlobal->WriteSystemLog(szSystemLog);
  194.     DBGOUT(szSystemLog);
  195.  
  196.     m_PeerSocketType = ST_INVALID_TYPE;
  197.  
  198.     CIOCPSocket::OnClose(30);
  199. }
  200.  
  201.  
  202. =====================================================================================================
  203. FieldPhpWebIOCPSocket.h
  204. =====================================================================================================
  205.  
  206. #if !defined(AFX_PHPWEBIOCPSOCKET_H__9C62870A_F7ED_49A2_9583_956845931320__INCLUDED_)
  207. #define AFX_PHPWEBIOCPSOCKET_H__9C62870A_F7ED_49A2_9583_956845931320__INCLUDED_
  208.  
  209. #if _MSC_VER > 1000
  210. #pragma once
  211. #endif // _MSC_VER > 1000
  212.  
  213. #include "FieldPhpWebIOCP.h"
  214. #include "AtumProtocol.h"
  215.  
  216. class CFieldIOCP;
  217.  
  218. class CFieldPHPWebIOCPSocket : public CIOCPSocket
  219. {
  220.     friend class CFieldPHPWebIOCP;
  221.    
  222. public:
  223.     CFieldPHPWebIOCPSocket();
  224.     ~CFieldPHPWebIOCPSocket();
  225.  
  226. public:
  227.     BOOL OnRecvdPacketFieldWebServer(const char* pPacket, int nLength, BYTE nSeq, char* pPeerIP = "", int nPeerPort = 0, SThreadInfo *i_pThreadInfo=NULL);
  228.     void OnConnect(void);
  229.     void OnClose(int reason = 0);
  230.  
  231. protected:
  232.     CFieldIOCP *GetFieldIOCP()              { return ms_pFieldWebIOCP->m_pFieldIOCP; }
  233.     CFieldPHPWebIOCP *GetFieldWebIOCP()     { return ms_pFieldWebIOCP; }
  234.  
  235. private:
  236.     static CFieldPHPWebIOCP     *ms_pFieldWebIOCP;
  237.  
  238. };
  239.  
  240. #endif // !defined(AFX_PHPWEBIOCPSOCKET_H__9C62870A_F7ED_49A2_9583_956845931320__INCLUDED_)
  241.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement