SDC C-Project CF Review 프로그램
kojingeun
2023-11-24 c112cf54a238afa473e7eb0ea6298e06f4957658
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#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;
};