Files
mir_server/sdk/srvlib/include/CustomServerClientSocket.h

68 lines
2.2 KiB
C
Raw Normal View History

2025-01-09 17:45:40 +08:00
#ifndef _CUSTOM_SERVERCLIENT_SOCKET_H_
#define _CUSTOM_SERVERCLIENT_SOCKET_H_
/************************************************************
*
*
*
*
*
* 使使
*
* 便
*
*
***********************************************************/
#include "Thread.h"
#include "Lock.h"
using namespace wylib::time::tick64;
using namespace wylib::container;
using namespace wylib::sync::lock;
using namespace wylib::thread;
class CCustomServerClientSocket : public CCustomWorkSocket, public Counter<CCustomServerClientSocket>
{
public:
typedef CCustomWorkSocket Inherited;
public:
CCustomServerClientSocket();
CCustomServerClientSocket(SOCKET nSocket, SOCKADDR_IN *pClientAddr);
virtual ~CCustomServerClientSocket();
//获取客户端连接地址和端口
inline SOCKADDR_IN GetRemoteAddrIn(){ return m_RemoteAddr; }
//获取客户端名称
inline LPCTSTR GetRemoteHost(){ return m_sRemoteHost; }
//获取客户端端口
inline INT GetRemotePort(){ return m_nRemotePort; }
//获取和设置是否主动向客户端发送保持连接数据属性默认值为TRUE
inline BOOL GetActiveKeepAlive(){ return m_boActiveKeepAlive; }
inline VOID SetActiveKeepAlive(const BOOL boActive){ m_boActiveKeepAlive = boActive; }
//由外部调用例行执行函数
inline VOID Run(){ SingleRun(); }
protected:
/*** 子类可能必要覆盖的函数集 ***/
//当长时间没有通信后发送保持连接的消息
virtual VOID SendKeepAlive();
protected:
//设置客户端套接字
VOID SetClientSocket(SOCKET nSocket, SOCKADDR_IN *pClientAddr);
//覆盖 例行执行函数
VOID SingleRun();
protected:
SOCKADDR_IN m_RemoteAddr; //客户端连接地址和端口
char m_sRemoteHost[128]; //客户端名称
int m_nRemotePort; //客户端端口
BOOL m_boActiveKeepAlive;//是否主动向客户端发送保持连接数据包
};
#endif