Files
mir_server/Gateway/srvlib/include/net/net_client.h
aixianling 5c9f1dae4a init
2025-01-09 17:45:40 +08:00

86 lines
1.6 KiB
C++

#ifndef _CLIENT_SOCKET_H_
#define _CLIENT_SOCKET_H_
using namespace tick64;
using namespace container;
using namespace lock;
class NetClient :
public WorkSocket
{
public:
typedef WorkSocket Inherited;
public:
NetClient(const char* name);
virtual ~NetClient();
inline const char* GetClientName()
{
return client_name_;
}
inline const char* GetHost()
{
return host_;
}
void SetHost(const char* sHost);
inline int GetPort()
{
return port_;
}
void SetPort(const int nPort);
virtual bool Startup();
virtual void Stop();
#ifdef _MSC_VER
unsigned long GetThreadId()
#else
pthread_t GetThreadId()
#endif
{
return thread_id_;
}
protected:
virtual void OnWorkThreadStart();
virtual void OnWorkThreadStop();
virtual int GetLocalServerType() = 0;
virtual const char* GetLocalServerName() = 0;
virtual int GetLocalServerIndex();
void SendRegisteClient();
protected:
void SetClientName(const char* sClientName);
virtual bool ConnectToServer();
virtual void OnRun();
protected:
void Connected();
void Disconnected();
void SocketError(int errorCode);
private:
#ifdef _MSC_VER
static void STDCALL Work_R(NetClient* ptr);
#else
static void* Work_R(void* ptr);
#endif
private:
#ifdef _MSC_VER
HANDLE handle_; //工作线程句柄
unsigned long thread_id_; //线程ID
#else
pthread_t thread_id_;
#endif
bool stoped_; //是否标记为停止
bool exit_;
char host_[256]; //服务器地址
protected:
u_long addr_;
int port_; //服务器端口
char client_name_[256]; //客户端名称
time_t reconn_t_; //重新连接服务器的时间
};
#endif