157 lines
3.7 KiB
C
157 lines
3.7 KiB
C
|
|
#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
|