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

📄 sockserver.h

📁 冰人引擎,本2d游戏引擎定位于游戏次中层引擎。他不像CDX等引擎那样
💻 H
字号:
//			Icer Game Engine v1.0
//						Http://www.ngame2000.com
//
//Author:杨冰(源代码之光)
//			E-mail:	iceryeah2000@163.com
//			QQ :	7746642
//
//Module:网络socket服务端
//
//Create:2003-3-6
//Updata:2003-3-14
//
//Describe:提供网络功能部分的服务端管理接口
//Remark:	2003-3-10: Deleting all codes,and rewrite it
//			2003-3-11: Adding event and thread
//			2003-3-14: Compeling all codes!!

#pragma once

#include "SockClient.h"

using namespace std;

class CSockServer
{
private:
	SOCKET	m_sSocket;				//socket

	char	m_strIP[128];			//ip地址
	DWORD	m_dwPort;				//端口
	DWORD	m_dwProtocol;			//协议

	HANDLE	m_hEvent[2];			//事件
	HANDLE	m_hThread;				//消息线程

	list <CSockClient*>	m_ClientList;				// 客户端Socket列表

	bool	m_bRunState;							//运行状态

	bool static ListenThread(LPVOID lpParam);		//侦听线程
	bool static ServerThread(LPVOID lpParam);		//服务端消息响应线程

	typedef bool (*ServerThreadMsg)(CSockServer* pSocket,DWORD dwMessage,DWORD dwValue,DWORD dwErrorCode);
	typedef bool (*ClientThreadMsg)(CSockClient* pSocket,DWORD dwMessage,DWORD dwValue,DWORD dwErrorCode);
	ServerThreadMsg m_pListenThreadMessage;
	ClientThreadMsg m_pServerThreadMessage;

public:
	CSockServer(void);
	~CSockServer(void);

	bool Initialize(void);
	void Cleanup(void);

	bool Create(const char* strIP, DWORD dwPort,DWORD dwProtocol = SOCK_STREAM);	//创建socket
	bool Listen(DWORD dwMaxNumber);		//侦听
	bool Accept(void);					//accept

	bool SendTcpAll(LPVOID lpBuffer,DWORD dwBufferLenght,DWORD dwFlags = 0);	//发送信息给全体客户端

	bool InstrSocket(CSockClient* pSocket)	{m_ClientList.push_back(pSocket); return true;}
	bool DeleteSocket(CSockClient* pSocket)	{m_ClientList.remove(pSocket); return true;}
	bool CheckList(void);

public:
	bool		GetRunState(void)			{return m_bRunState;}		//获得运行状态
	void		SetRunState(bool bState)	{m_bRunState = bState;}		//设置运行状态

	HANDLE*		GetEvent(void)				{return m_hEvent;}			//获得事件
	SOCKET		GetSocket(void)				{return m_sSocket;}			//获得socket

	list<CSockClient*>*	GetClientList(void)		{ return &m_ClientList; }

	ServerThreadMsg GetListenThread(void)					{return m_pListenThreadMessage;}	
	void			SetListenThread(ServerThreadMsg pMsg)	{m_pListenThreadMessage = pMsg;}
	
	ClientThreadMsg GetServerThread(void)					{return m_pServerThreadMessage;}	
	void			SetServerThread(ClientThreadMsg pMsg)	{m_pServerThreadMessage = pMsg;}
	
};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -