serversocket.h

来自「一个HTTP协议的封装类」· C头文件 代码 · 共 53 行

H
53
字号
#pragma once
#include "Socket.h"
#include "..\data\User.h"
using fs::data::User;
#include "..\data\Message.h"
using namespace fs::data;

namespace fs
{
	namespace socket
	{
		class ToClientSocket;

		class ServerSocket:public Socket
		{
		public:
			ServerSocket(UINT port,UINT backlog=SOMAXCONN);
		public:
			virtual ~ServerSocket(void);
			
		protected:
			//存储所有的连接
			SocketMap toClientSocketMap;
			UserMap userMap;
		public:
			virtual VOID Run();//持续调用Accept();

			/************************************************************************/
			/*  服务端具有的方法                                                        */
			/************************************************************************/
			//等待请求,返回New出的ToClientSocket的指针
			ToClientSocket* AcceptD();
			/*
			接收到请求后的处理,子类可以覆盖此方法,比如实现不接收它的请求。
			默认是启动线程,持续接收信息,并把ToClientSocket的指针保存。
			*/
			virtual VOID OnAccept( ToClientSocket* pToClientSocket );
			//接收到信息后,
			virtual VOID OnReceive(ToClientSocket* pToClientSocket,CHAR* pBuf,UINT len);
			//给客户广播信息,是一个服务端主动的方法
			VOID SendMessageToClients(CONST CHAR* pBuf,UINT len);
			VOID SendMessageToClients(CONST CString& str);
			VOID SendOnlineUsersToClients();
			//处理客户操作
			virtual VOID OnClientExit(ToClientSocket* pToClientSocket);
			virtual VOID OnClientAuthentiateSuccess(ToClientSocket* pToClientSocket);
			virtual VOID OnClientAuthentiateFail(ToClientSocket* pToClientSocket);
			virtual VOID OnClientChat(ToClientSocket* pToClientSocket,CHAR* pBuf,UINT size)=0;
			virtual VOID OnClientDraw(ToClientSocket* pToClientSocket,CHAR* pBuf,UINT size)=0;
			VOID OnPassiveDisconnect();
		};
	}
}

⌨️ 快捷键说明

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