123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 |
- /*************************************************************
- /* Copyright (C), 2014-2020, lyfz. Co., Ltd.
- /* 文件名: IClientImpl.h
- /* 作者: Jeff.w
- /* 创建日期: 2014-08-07
- /* 版本号: V1.0
- /* 描述: 核心层底,客户端与服务端通信接口
- /* 其它:
- /* 主要类模块:
- /* 历史修改记录:
- /* 作者 时间 版本 描述
- /* Jeff.w 14/08/07 1.0 创建这个模块
- ***************************************************************/
- #ifndef __ICLIENT_IMPL_HEADER__
- #define __ICLIENT_IMPL_HEADER__
- #pragma once
- #include <afxwin.h>
- #include <atlbase.h>
- //#pragma warning(push)
- //#pragma warning(disable:4995)
- //#pragma warning(pop)
- #include "CritSection.h"
- #include "SocketHandle.h"
- #include "SocketClientImpl.h"
- #include "Client2SrvType.h"
- #if 1
- #define RemoteSvr _T("lijiafz.vicp.net")
- #else
- #define RemoteSvr _T("192.168.1.31")
- //#define RemoteSvr _T("192.168.1.223")
- #endif
- class IClientImpl : public ISocketClientHandler
- {
- typedef SocketClientImpl<ISocketClientHandler> CSocketClient;
- friend CSocketClient;
- public:
- IClientImpl();
- ~IClientImpl();
-
- void StartReConnectSrvThread();
- static DWORD WINAPI ReConnectSrvThread(LPVOID pInstance);
- protected:
- virtual void OnThreadBegin(CSocketHandle* pSH);
- virtual void OnThreadExit(CSocketHandle* pSH);
- virtual void OnDataReceived(CSocketHandle* pSH, const BYTE* pbData, DWORD dwCount, const SockAddrIn& addr);
- virtual void OnConnectionDropped(CSocketHandle* pSH);
- virtual void OnConnectionError(CSocketHandle* pSH, DWORD dwError);
- protected:
- int m_nMode; // IPV4 或 IPV6
- int m_nSockType; // UDP 或 TCP
- // 连接的服务器地址;
- TCHAR m_SvrAddr[MAX_PATH];
- // 连接的服务器端口;
- TCHAR m_SvrPort[MAX_PATH];
- // 线程句柄;
- HANDLE m_hReConnectSrvThreadHandle;
- // 线程退出句柄;
- HANDLE m_hRunObject;
- void _cdecl AppendText(LPCTSTR lpszFormat, ...);
- void GetAddress(const SockAddrIn& addrIn, CString& rString) const;
- bool GetDestination(SockAddrIn& addrIn) const;
- bool SetupMCAST();
- public:
- BOOL m_bRecevie; // 是否已接收服务器的返回;
- BOOL m_bStopbeat; // 是否心跳包;
- BOOL m_bSocket; // 套接字是否打开;
- CSocketClient m_SocketClient;
- BOOL Initialize();
- BOOL ConnectServer(LPCTSTR strAddr, LPCTSTR strPort);
- void net_CloseSocket();
- void SendMsg(void *pMsg,const int nLen);
- BOOL SolveDBError();
- public:
- // .用户登陆服务器请求;
- BOOL LoginRemoteSvrRequest();
- BOOL LoginLocalSvrRequest();
- // .用户登陆服务请求,服务器的响应返回;
- void LoginRemoteSvrResponse(void *pLoginResult);
- void LoginLocalSvrResponse(void *pLoginResult);
- // .客户端登陆后,聊天数据请求;
- BOOL ChatRemoteSvrMessageRequest(void *szDataBuf, int nDataLen);
- BOOL ChatLocalSvrMessageRequest(void *szDataBuf, int nDataLen);//ChatLocalSvrMessageRequest
- // .客户端登陆后,聊天数据请求,服务端的响应返回;
- void ChatRemoteSvrMessageResponse(void *pResponse);
- void ChatLocalSvrMessageResponse(void *pResponse);
- void DataToArray(IN BYTE *pData, IN CONST DWORD &dwLength, IN CArray<CStringArray, CStringArray>*List1array);
- public:
- DWORD m_dwCurRecive; // 当前接收的字节;
- DWORD m_dwSumRecive; // 总接收的字节;
- BYTE *m_pRecivebuf; // 接收的缓存;
- DWORD m_dwSendCode;
- SENDHEAD m_tSendhead;
- //////////////////////////////////////////////////////////////////////////
- public:
- void *m_pContext;
- LPTRANSPORT_EVENT m_eventHandler;
-
- INT Transport_Init(){
- return CSocketHandle::InitLibrary(MAKEWORD(2, 2));
- }
- INT Transport_UnInit(){
- return CSocketHandle::ReleaseLibrary();
- }
- INT net_OpenSocket(
- IN CONST INT& nType,
- IN CONST DWORD& dwPort,
- IN LPTRANSPORT_EVENT eventHandler,
- void *pContext
- );
- INT net_Connect(IN LPCTSTR strAddr, LPCTSTR strPort);
- DWORD net_Send(IN void *pHeader, IN void *pMessage, IN CONST unsigned long ulDataLen);
- };
- #endif
|