⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 socketbase.h.bak

📁 网络socket,IO,线程池
💻 BAK
字号:
/*
   2003 by zhy
*/
#ifndef _MY_STATEBASE_H
#define _MY_STATEBASE_H

#pragma warning(disable:4786)

#include <vector>
#include <string>
using namespace std;

namespace NET{

class	CSocketBase
{
public:
	enum	typeState
	{
		STATE_CLOSE	= 0x00,
		STATE_OPEN	= 0x01,
		STATE_ERR	= 0x02,
		STATE_EOF	= 0x04,
		STATE_MASK	= 0x07
	};
	////////////////////////////////////////////////////////////////////////////
	// Constructors / Destructor                                              //
	////////////////////////////////////////////////////////////////////////////
	
	CSocketBase(SOCKET sock = INVALID_SOCKET,typeState nState = STATE_CLOSE) : m_sock(sock),
				 m_nState(nState) 
	{
		
	}
	virtual	~CSocketBase(){}

	////////////////////////////////////////////////////////////////////////////
	// Operations                                                             //
	////////////////////////////////////////////////////////////////////////////
	
	virtual int Write(const void *buf, size_t len) = 0;
	virtual int Read(void *buf, size_t len) = 0;	
	
	// Close
	void 	 Close();
	void 	 Onlyclose();
	void 	 Shutdown();
	
	////////////////////////////////////////////////////////////////////////////
	// Attributes                                                             //
	////////////////////////////////////////////////////////////////////////////
	
	typeState		GetState(void) const { return m_nState; }

	bool			Closed(void) const { return (GetState() & STATE_MASK) == STATE_CLOSE; }

	bool			Opened(void) const { return (GetState() & STATE_OPEN) != 0; }

	bool			Error(void) const { return (GetState() & STATE_ERR) != 0; }

	bool			Eof(void) const { return (GetState() & STATE_EOF) != 0; }
	
	
protected:

	////////////////////////////////////////////////////////////////////////////
	// Protected Operations                                                   //
	////////////////////////////////////////////////////////////////////////////
	
	void			SetState(typeState nState) { m_nState = nState; }
	
	void			SetStateBit(typeState nState);
	
	void			ClearStateBit(typeState nState);	
	
	////////////////////////////////////////////////////////////////////////////
	// Protected Operations,Something SubClass will use                       //
	////////////////////////////////////////////////////////////////////////////
	int 			SocketTimeCheck(SOCKET	fd,int nAction,int nSec,int nUSec);
	struct in_addr 		GetIPAddr( const char * lpszHost );
	bool			GetOwnIP(vector<string>& vOwnIP);
protected:
	typeState		m_nState;
	SOCKET			m_sock;
};
}

#endif

⌨️ 快捷键说明

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