#pragma once #define SERVERCLOSEMSG "SERVERCLOSE" #define CLIENTDISCONNECT -10001 #define SERVERDISCONNECT -10002 #define SERVERMESSAGE (WM_USER + 10) #include "akNetworkLinker.h" #include #include #include struct AKNETWORK_DLLSPEC _WorkThreadParam { _WorkThreadParam() { pthis = NULL; clntSock; clntAddr; clntAddrSize = 0; hThread = NULL; dwThreadID = NULL; clntAddrSize=sizeof(clntAddr); } void* pthis; SOCKET clntSock; SOCKADDR_IN clntAddr; int clntAddrSize; HANDLE hThread; unsigned int dwThreadID; }; class AKNETWORK_DLLSPEC CakTCPServer { public: typedef void (*RecvMsgFunc) (char* pMsg, int nMsglen, void*); typedef void (*SystemMsgFunc) (char* pMsg, int nMsglen, void*); public: CakTCPServer(void); ~CakTCPServer(void); // ¼­¹ö»ý¼º BOOL CreateServer(unsigned int port); // ¼­¹öÁ¾·á void CloseServer(); // »ý¼ºµÈ ¼­¹ö ¾ÆÀÌÇÇ °ª ¾ò±â char* GetServerIP(); // ¸Þ¼¼Áö ¼Û½Å bool Send(char* sendMsg, int length); // ¼ÒÄÏ ¸Þ¼¼Áö ¼ö½Å ÄÝ¹é ¼³Á¤ void SetRecvMessageCallback(RecvMsgFunc userFunc, void* data = NULL); // ½Ã½ºÅÛ ¸Þ¼¼Áö ¼ö½Å ÄÝ¹é ¼³Á¤ void SetSystemMessageCallback(SystemMsgFunc userFunc, void* data = NULL); // ¼­¹ö »ý¼º »óÅ inline bool GetServerState(){return m_isServerCreate;}; bool m_isServerCreate; protected: void setSystemMsg(const char* format, ...); private: HANDLE m_hMutex; //¹ÂÅØ½º º¯¼ö ¼±¾ð SOCKET m_servSock; SOCKADDR_IN m_servAddr; HANDLE m_hThread; unsigned int m_dwThreadID; void EchoMsg(char* message, int len); //³ª¸¦ Æ÷ÇÔÇÑ ¸ðµÎ¿¡°Ô ¸Þ¼¼Áö Àü¼Û void EchoMsgNotMe(SOCKET mySocket, char* message, int len); //³ª¸¦ Á¦¿ÜÇÑ ¸ðµÎ¿¡°Ô ¸Þ¼¼Áö Àü¼Û void RemoveSocketList(SOCKET clntSock, SOCKADDR_IN clntAddr); static unsigned int __stdcall ThreadMain(void *arg); //¸ÞÀÎ ¼­¹ö Ŭ¶óÀÌ¾ðÆ® ´ë±â¿ë ¾²·¹µå static unsigned int __stdcall ClientWorkFunc(void *arg); //Ŭ¶óÀÌ¾ðÆ® ¸Þ¼¼Áö ¹Þ´Â ¾²·¹µå //void (*pCallBackRecvMsg)(char*,int,void*); // Äݹé ÇÔ¼ö RecvMsgFunc m_recvmsgFunc; void* m_recvmsgData; SystemMsgFunc m_systemmsgFunc; void* m_systemmsgData; private: std::vector m_socketList; //Ŭ¶óÀÌ¾ðÆ® ¸®½ºÆ® °ü¸® }; ////////////////////////////////////////////////////////////////////////// /* 1. KimTCPIP.lib, KimTCPIP.dll, KimServer.h ÆÄÀÏ º¹»ç 2. ÇÁ·ÎÁ§Æ®¿¡ KimTCPIP.lib Ãß°¡ 3. ÀνºÅϽº »ý¼º - CakTCPServer m_kimserver; 4. ¼­¹ö ÃʱâÈ­ ¹× ¼­¹ö »ý¼º - InitServer(HWND hwnd); 5. ¼­¹ö·ÎºÎÅÍ ¸Þ¼¼Áö(ex) //³ªÁß¿¡ ÀÛ¼º 6. ¼­¹ö Á¾·á - OnClose(); */