tcpclient.h

来自「C++ patterns设计模式」· C头文件 代码 · 共 54 行

H
54
字号
#ifndef INCLUDED_TCPCLIENT_H
#define INCLUDED_TCPCLIENT_H

#if defined(HAS_PRAGMA_ONCE)
#pragma PRAGMA_ONCE_DECLARE
#endif

#include "socketex.h"
#include "patterns/util/logcontrol.h"

namespace acl
{
	class TcpClient : public CTThreadExtend
					, public stk::LogControl
	{
	public:
		TcpClient();
		TcpClient(u_short port, const char *addr);
		virtual ~TcpClient();

		//start the service
		bool			start();
		bool			start(u_short port, const char *addr);
		//stop the service
		void			stop(int timeout = INFINITE);

		//main interface for user call :
		int				send(const char *buf, int buf_size);
		bool			connected()			{ return m_comm.isConnected();	}
		DWORD           getError()          { return m_comm.getError();		}		

	private:
		bool connect();
		bool connect(const SocketAddress &address);
		virtual void    threadProcess();
		void			handleBroken();
		virtual void	onConnected()		{ }
		virtual void	onBroken()			{ }
		virtual int		onReceive() = 0;

	protected:
		ClientSocket	m_comm;				// communication component
	private:
		volatile bool	m_exit_signaled;
		bool			m_alive;
		int				m_reconnectInterval;
		enum 
		{
			RECONNECT_INTERVAL = 3000,		// reconnect timer interval
		};
	};
}
#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?