SDC C-Project CF Review 프로그램
kojingeun
2023-07-14 f77e8008cac062596058fca2aeddda62b80bedbf
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
74
75
76
77
78
79
80
81
82
83
84
 
#pragma once
 
 
 
#include "akNetworkLinker.h"
#include <WinSock2.h>
 
 
 
class AKNETWORK_DLLSPEC CakTCPSocket
{
public:
    typedef void (*RecvMsgFunc) (char* pMsg, int nMsglen, void*);
    typedef void (*SystemMsgFunc) (char* pMsg, int nMsglen, void*);
 
public:
     CakTCPSocket(void);
     ~CakTCPSocket(void);
 
    enum CONNECTRESULT
    {
        CONNECTRESULT_CONNECT_FAIL = 0, //¿¬°á½ÇÆÐ
        CONNECTRESULT_CONNECT_SUCCESS = 1, //¿¬°á¼º°ø
        CONNECTRESULT_ALREADY_CREATESOCKET = 2, //À̹̻ý¼ºµÈ ¼ÒÄÏ
        CONNECTRESULT_INVALID_SOCKET = 3, //¼ÒÄÏ»ý¼º ½ÇÆÐ
        CONNECTRESULT_WSASTARTUP_FAIL = 5 //StartUP½ÇÆÐ
        
    };
    // Á¢¼Ó
    CONNECTRESULT Connect(char* serverip, int port);
    // Á¢¼Ó µÉ¶§±îÁö Á¢¼Ó ½Ãµµ
    void ConnectContinue(char* serverip, int port);
    // Á¾·á
    void DisConnect();  
    // ¼ÒÄÏ ¸Þ¼¼Áö ¼ö½Å Äݹ頼³Á¤
    void SetRecvMessageCallback(RecvMsgFunc userFunc, void* data = NULL);
    // ½Ã½ºÅÛ ¸Þ¼¼Áö ¼ö½Å Äݹ頼³Á¤
    void SetSystemMessageCallback(RecvMsgFunc userFunc, void* data = NULL);
    // ¸Þ¼¼Áö Àü¼Û
    bool Send(char* sendchar, int length);      
    // Á¢¼Ó »óÅÂ
    inline BOOL GetConnectState(){return m_isConnect;};    
    
    SOCKET getSocket(){return m_ClinetSocket;};
 
    static unsigned int _stdcall RecvMSG(void *arg);      // ¹Þ´Â ¾²·¹µå
 
    bool m_bConnectRetry; //Á¢¼Ó µÉ¶§±îÁö Á¢¼Ó ½Ãµµ
    HANDLE m_hThreadConnect;
 
 
    int getInstanceHandle() const { return m_nInstanceHandle; }
    void setInstanceHandle(int val) { m_nInstanceHandle = val; }
 
protected:
    void setSystemMsg(const char* pMsg, ...);
private:
    static unsigned int _stdcall threadConnect(void* arg);
private:
    int m_nThreadFlag;
    HANDLE m_hMutex; //¹ÂÅØ½º º¯¼ö ¼±¾ð
    //CRITICAL_SECTION m_csSocketSend;
 
    SOCKET m_ClinetSocket;        //Ŭ¶óÀÌ¾ðÆ® ¼ÒÄÏ
 
    bool m_isConnect;            //Á¢¼Ó »óÅÂ
    
    int m_port;                    //Á¢¼Ó Æ÷Æ®
    char m_servIP[15];            //Á¢¼Ó ¼­¹ö
    
 
    HANDLE m_hThread;       //¾²·¹µå Çڵ頠  
    unsigned int m_dwThreadID;  //¾²·¹µå ¾ÆÀ̵ð
 
    void* m_pPacketSendBuf;
 
    RecvMsgFunc m_recvmsgFunc;
    void* m_recvmsgData;
    SystemMsgFunc m_systemmsgFunc;
    void* m_systemmsgData;
 
    int m_nInstanceHandle;
};