📄 serversocket.h
字号:
#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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -