|
#pragma once
|
|
|
|
#define SERVERCLOSEMSG "SERVERCLOSE"
|
#define CLIENTDISCONNECT -10001
|
#define SERVERDISCONNECT -10002
|
#define SERVERMESSAGE (WM_USER + 10)
|
|
#include "akNetworkLinker.h"
|
|
|
#include <WinSock2.h>
|
#include <process.h>
|
#include <vector>
|
|
|
|
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<SOCKET> m_socketList; //Ŭ¶óÀÌ¾ðÆ® ¸®½ºÆ® °ü¸®
|
|
|
};
|
|
//////////////////////////////////////////////////////////////////////////
|
/*
|
|
1. KimTCPIP.lib, KimTCPIP.dll, KimServer.h ÆÄÀÏ º¹»ç
|
|
2. ÇÁ·ÎÁ§Æ®¿¡ KimTCPIP.lib Ãß°¡
|
|
3. ÀνºÅϽº »ý¼º
|
- CakTCPServer m_kimserver;
|
|
4. ¼¹ö ÃʱâÈ ¹× ¼¹ö »ý¼º
|
- InitServer(HWND hwnd);
|
|
5. ¼¹ö·ÎºÎÅÍ ¸Þ¼¼Áö(ex)
|
//³ªÁß¿¡ ÀÛ¼º
|
|
6. ¼¹ö Á¾·á
|
- OnClose();
|
*/
|