📄 socketserver.h
字号:
#pragma once
#include "MyThread.h"
#include "NWIOCompletionPort.h"
//网络的所有东西,整和Iocp和Socket为上层提供服务
#include "NWClientConnect.h"
#include "IEventNotify.h"
#include <map>
using namespace std;
class CSystemInfo : public SYSTEM_INFO
{
public:
CSystemInfo()
{
::GetSystemInfo(this);
}
};
#ifdef NWSERVER_EXPORTS
#define NWSERVER_API __declspec(dllexport)
#else
#define NWSERVER_API __declspec(dllimport)
#endif
class NWSERVER_API CSocketServer :public MyThread
{
public:
class ClientManager ;
CSocketServer(void);
virtual ~CSocketServer(void);
ClientManager * m_pcClientManager;
//用来接收数据的callback,虚函数也可以
int StartupListen();
void StopListen();
void SetEventNotify(IEventNotify * pcIEventNotify){m_pcIEventNotify = pcIEventNotify;}
//事件函数
//OnConnectionError
protected:
WSADATA m_data;
CIOCompletionPort * m_pcIocp ;
CMySocket * m_pcSocket;//键听socket;
USHORT m_usListenPort ;//服务器端口
IEventNotify * m_pcIEventNotify;
HANDLE m_hHaveAcceptEvent;//接受事件,和监听socket的接受事件关联
bool m_bAcceptConnections;
virtual int Init();
virtual int Run();
virtual int UnInit();
int CreateOneClientConnect(SOCKET clientSocket,CSockAddr * pcClientAddrInfo);//创建一个用户连接
};
class CSocketServer::ClientManager
{
public:
ClientManager();
~ClientManager();
int AddOneClient(pNWClientConnect pClientPoint);
int DeleteOneClient(UINT ulClientID);
bool ClientIsExists(UINT ulClientID);
int GetClient(pNWClientConnect & pClientPoint,UINT ulClientID);
int RemoveAllClient();
UINT GetClientCount(){return MAX_CLIENT_CONNECT_COUNT - m_lsNullClientList.GetCount();};
protected:
pNWClientConnect * m_pClientPorint ; //MAX_CLIENT_CONNECT_COUNT客户,指项NWSocket的指针的数租。
void InitClManager();
void UninitClManager();
UINT m_ulClientCount ;
MyList_Win<UINT > m_lsNullClientList ;
};//*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -