Files
wnmj-normal/Servers/服务器组件/网站网关服务器/TCPSocket.h
2026-03-03 13:56:44 +08:00

59 lines
1.1 KiB
C++

#pragma once
#include <winsock2.h>
#include "ByteBuffer.h"
#include "Overlapped.h"
#include "IOCPServer.h"
// 处理消息的接口
class MessageProcesser
{
public:
MessageProcesser(){}
virtual ~MessageProcesser(){}
virtual bool processMessage(void *data, DWORD cmdLen) = 0;
};
class CIOCPServer;
// 默认数据包格式
// WORD | BIN
// Size | Datas
// 前两个字节代表大小,后面是指定长度的数据
class CTCPSocket : public MessageProcesser
{
friend class CIOCPServer;
public:
CTCPSocket(WORD id, WORD socket, DWORD dwClientAddr, CIOCPServer* pIOCPServer);
virtual ~CTCPSocket(void);
WORD getID() { return m_wID; }
SOCKET getSocket() { return m_hSocket; }
//获取地址
DWORD getClientAddr() { return m_dwClientAddr; }
// 发送数据
virtual bool sendData(void* data, DWORD len);
public:
// 处理接收到的数据
virtual bool processRecvData(void* data, DWORD len);
// 处理处理过的消息数据
virtual bool processMessage(void *data, DWORD cmdLen){return true;}
public:
CIOCPServer* m_pIOCPServer;
private:
WORD m_wID;
SOCKET m_hSocket;
DWORD m_dwClientAddr;
ByteBuffer m_recvBuffer;
};