#pragma once #include "NetJoiner.h" #include "IOCPNetwork2Parent.h" class AFX_EXT_CLASS CNetServer : public CIOCPController { public: CNetServer(); virtual ~CNetServer(); void SetIN2P(IIOCPNetwork2Parent* pN2M){ m_pN2M = pN2M; } BOOL InitNetwork(NetworkMode Mode, int nSocketCount, int nPort = 0, CString strIP = _T(""), BOOL bAcceptSameIP = FALSE); int GetClientCount() { return m_nClientCount; } BOOL SetClientInfo(int ST, int nCount, short sNetworkCode, short sVersion, BOOL bUseHeartbeat, int nPacketCount = 100); short GetNetworkCode() { return m_sNetworkCode; } short GetVersion() { return m_sVersion; } CNetPacket* GetPacket(); CNetJoiner* GetJoinerArray(int nIdx) { return m_pClientJoiner ? &m_pClientJoiner[nIdx] : NULL; } CNetJoiner* GetJoinerUser(int nModuleNo); // Client Àüü¿¡ Àü¼Û. BOOL InvokeToClient(int nType, SHORT sResult); BOOL InvokeToClient(int nType, SHORT sResult, CNetPacket* pPacket); BOOL InvokeToClient(int nType, SHORT sResult, SHORT sPacketIdx, CNetPacket* pPacket); // ÇÑ Client¿¡ Àü¼Û. BOOL SendToClient(int nModuleNo, int nType, SHORT sResult); BOOL SendToClient(int nModuleNo, int nType, SHORT sResult, CNetPacket* pPacket); BOOL SendToClient(int nModuleNo, int nType, SHORT sResult, SHORT sPacketIdx, CNetPacket* pPacket); // Á¢¼Ó ÃʱâÈ­. BOOL DisconnectClient(int nModuleNo); protected: // Server SocketÀÌ Á¢¼ÓÀ» Çã¿ëÇßÀ» ¶§ È£ÃâÇÏ´Â ÇÔ¼ö. virtual int AcceptedSocket(pPerSocketContext pSocketCtx, ULONG ulIP, int nPort); // Client SocketÀÌ Á¢¼ÓµÇ¾úÀ» ¶§ È£ÃâÇÏ´Â ÇÔ¼ö virtual BOOL ConnectedSocket(pPerSocketContext pSocketCtx); // Socket¿¡¼­ Receive°¡ ¿Ï·áµÇ¾úÀ» ¶§ CIOCPController¿¡¼­ È£ÃâÇÏ´Â ÇÔ¼ö - Data Parseing virtual BOOL RecvCompleted(pPerSocketContext pSocketCtx, DWORD dwBytes); // SocketÀ» ÅëÇØ Send°¡ ¿Ï·áµÇ¾úÀ» ¶§ CIOCPController¿¡¼­ È£ÃâÇÏ´Â ÇÔ¼ö. - ÈÄó¸® virtual BOOL SendCompleted(pPerSocketContext pSocketCtx, DWORD dwBytes); // SocketÀÌ ²÷¾îÁ³À½À» ¾Ë·ÁÁÖ±â À§ÇÑ ÇÔ¼ö virtual void SocketClosed(pPerSocketContext pSocketCtx); private: IIOCPNetwork2Parent* m_pN2M; // Packet ±¸Á¶Ã¼ CNetPacket* m_pPacket; int m_nTotalPacketCount; CRITICAL_SECTION m_csPacket; int m_nPacketIdx; // Client List CNetJoiner* m_pClientJoiner; int m_nClientCount; // ¼³Á¤µÈ Client ¼ö (ClientÀÇ Max ¼ö) int m_Clientint; // Network Information short m_sNetworkCode; short m_sVersion; int m_nListenPort; BOOL m_bAcceptSameIP; };