Files

59 lines
1.2 KiB
C++
Raw Permalink Normal View History

2026-03-03 13:56:44 +08:00
#include "StdAfx.h"
#include "TCPSocket.h"
CTCPSocket::CTCPSocket(WORD id, WORD socket, DWORD dwClientAddr, CIOCPServer* pIOCPServer)
{
m_wID = id;
m_hSocket = socket;
m_dwClientAddr = dwClientAddr;
m_pIOCPServer = pIOCPServer;
}
CTCPSocket::~CTCPSocket(void)
{
}
bool CTCPSocket::sendData(void* data, DWORD len)
{
if (m_hSocket == INVALID_SOCKET)
return false;
if (data == NULL || len == 0)
return false;
return m_pIOCPServer->SendData(m_wID, data, len);
}
bool CTCPSocket::processRecvData(void* data, DWORD len)
{
const int HEADER_SIZE = 2;
// <20><>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_recvBuffer.write(data, len);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>СС<D0A1><D0A1>2<EFBFBD><32><EFBFBD>ֽ<EFBFBD>
if (m_recvBuffer.size() < HEADER_SIZE)
return true;
// <20>ж<EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽڣ<D6BD><DAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȣ<EFBFBD>
WORD size = 0;
m_recvBuffer.get(&size, sizeof(size));
if (size < HEADER_SIZE || size > MAX_USER_PACK_SIZE) {
printf("<EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD><EFBFBD>޷<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, id=%d\n", m_wID);
m_pIOCPServer->Disconnect(m_wID);
return false;
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݲ<EFBFBD><DDB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (size > m_recvBuffer.size()) {
return true;
}
// <20><><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
BYTE userPack[MAX_USER_PACK_SIZE];
m_recvBuffer.read(userPack, size);
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
return processMessage(userPack, size);
}