Files
wnmj/Servers/服务器组件/网络服务/ClientSocket.h

157 lines
3.7 KiB
C
Raw Normal View History

2026-02-13 14:34:15 +08:00
#ifndef TCP_SOCKET_HEAD_FILE
#define TCP_SOCKET_HEAD_FILE
#pragma once
#include "WinSock2.h"
#include "ClientSocketHead.h"
//////////////////////////////////////////////////////////////////////////
//TCP <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
class CClientSocket : public CWnd, public IClientSocket
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
protected:
WORD m_wSocketID; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ
BYTE m_cbSocketStatus; //<2F><><EFBFBD><EFBFBD>״̬
//<2F>ں˱<DABA><CBB1><EFBFBD>
protected:
SOCKET m_hSocket; //<2F><><EFBFBD>Ӿ<EFBFBD><D3BE><EFBFBD>
IClientSocketSink * m_pIClientSocketSink; //<2F>ص<EFBFBD><D8B5>ӿ<EFBFBD>
//<2F><><EFBFBD>ձ<EFBFBD><D5B1><EFBFBD>
protected:
WORD m_wRecvSize; //<2F><><EFBFBD>ճ<EFBFBD><D5B3><EFBFBD>
BYTE m_cbRecvBuf[SOCKET_TCP_BUFFER*10]; //<2F><><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
protected:
bool m_bNeedBuffer; //<2F><><EFBFBD><EFBFBD>״̬
DWORD m_dwBufferData; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DWORD m_dwBufferSize; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С
LPBYTE m_pcbDataBuffer; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
protected:
BYTE m_cbSendRound; //<2F>ֽ<EFBFBD>ӳ<EFBFBD><D3B3>
BYTE m_cbRecvRound; //<2F>ֽ<EFBFBD>ӳ<EFBFBD><D3B3>
DWORD m_dwSendXorKey; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Կ
DWORD m_dwRecvXorKey; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Կ
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
protected:
DWORD m_dwSendTickCount; //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
DWORD m_dwRecvTickCount; //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
DWORD m_dwSendPacketCount; //<2F><><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD>
DWORD m_dwRecvPacketCount; //<2F><><EFBFBD>ܼ<EFBFBD><DCBC><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
public:
//<2F><><EFBFBD><EFBFBD><ECBAAF>
CClientSocket();
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual ~CClientSocket();
//<2F><><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>
public:
//<2F>ͷŶ<CDB7><C5B6><EFBFBD>
virtual VOID Release() { delete this; }
//<2F>ӿڲ<D3BF>ѯ
virtual VOID * QueryInterface(REFGUID Guid, DWORD dwQueryVer);
//<2F><>ʶ<EFBFBD>ӿ<EFBFBD>
public:
//<2F><>ȡ<EFBFBD><C8A1>ʶ
virtual WORD GetSocketID() { return m_wSocketID;}
//<2F><><EFBFBD>ñ<EFBFBD>ʶ
virtual VOID SetSocketID(WORD wSocketID) { m_wSocketID=wSocketID; }
//<2F><><EFBFBD>ýӿ<C3BD>
public:
//<2F><><EFBFBD>ýӿ<C3BD>
virtual bool SetTCPSocketSink(IUnknownEx * pIUnknownEx);
//<2F><>ȡ<EFBFBD>ӿ<EFBFBD>
virtual VOID * GetTCPSocketSink(const IID & Guid, DWORD dwQueryVer);
//<2F><>Ϣ<EFBFBD>ӿ<EFBFBD>
public:
//<2F><>ȡ״̬
virtual BYTE GetSocketStatus() { return m_cbSocketStatus; }
//<2F><><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD>
virtual DWORD GetLastSendTick() { return m_dwSendTickCount; }
//<2F><><EFBFBD>ռ<EFBFBD><D5BC><EFBFBD>
virtual DWORD GetLastRecvTick() { return m_dwRecvTickCount; }
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ
virtual DWORD GetSendPacketCount() { return m_dwSendPacketCount; }
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ
virtual DWORD GetRecvPacketCount() { return m_dwRecvPacketCount; }
//<2F><><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>
public:
//<2F>ر<EFBFBD><D8B1><EFBFBD><EFBFBD><EFBFBD>
virtual VOID CloseSocket();
//<2F><><EFBFBD>Ӳ<EFBFBD><D3B2><EFBFBD>
virtual BYTE Connect(DWORD dwServerIP, WORD wPort);
//<2F><><EFBFBD>Ӳ<EFBFBD><D3B2><EFBFBD>
virtual BYTE Connect(LPCTSTR pszServerIP, WORD wPort);
//<2F><><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
virtual WORD SendData(WORD wMainCmdID, WORD wSubCmdID);
//<2F><><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
virtual WORD SendData(WORD wMainCmdID, WORD wSubCmdID, VOID * pData, WORD wDataSize);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
protected:
//<2F><><EFBFBD>Ӵ<EFBFBD><D3B4><EFBFBD>
DWORD ConnectProxyServer();
//<2F><>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>
DWORD TranslateAddr(LPCTSTR pszServerAddr);
//<2F><><EFBFBD>ܺ<EFBFBD><DCBA><EFBFBD>
protected:
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
WORD CrevasseBuffer(BYTE cbDataBuffer[], WORD wDataSize);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
WORD EncryptBuffer(BYTE cbDataBuffer[], WORD wDataSize, WORD wBufferSize);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
private:
//<2F><><EFBFBD><EFBFBD>ӳ<EFBFBD><D3B3>
inline BYTE MapSendByte(BYTE cbData);
//<2F><><EFBFBD><EFBFBD>ӳ<EFBFBD><D3B3>
inline BYTE MapRecvByte(BYTE cbData);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
protected:
//<2F>ر<EFBFBD><D8B1><EFBFBD><EFBFBD><EFBFBD>
VOID CloseSocket(BYTE cbShutReason);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
VOID AmortizeBuffer(VOID * pData, WORD wDataSize);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DWORD SendDataBuffer(VOID * pBuffer, WORD wSendSize);
//<2F><>Ϣӳ<CFA2><D3B3>
protected:
//ʱ<><CAB1><EFBFBD><EFBFBD>Ϣ
VOID OnTimer(UINT_PTR nIDEvent);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
LRESULT OnSocketNotify(WPARAM wParam, LPARAM lParam);
//<2F><>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
protected:
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ
LRESULT OnSocketNotifyRead(WPARAM wParam, LPARAM lParam);
//<2F><><EFBFBD><EFBFBD><E7B7A2>
LRESULT OnSocketNotifyWrite(WPARAM wParam, LPARAM lParam);
//<2F><><EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD>
LRESULT OnSocketNotifyClose(WPARAM wParam, LPARAM lParam);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
LRESULT OnSocketNotifyConnect(WPARAM wParam, LPARAM lParam);
DECLARE_MESSAGE_MAP()
};
//////////////////////////////////////////////////////////////////////////
#endif