⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 socketserver.h

📁 这是我做的一个iocp的服务器端的测试代码
💻 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 + -