86 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			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
 | |
| 
 |