#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;
|
};
|