StyleMan_NetEngine 轻量级网络引擎 v1.0发表
现在只封装了win32的 select+线程池 和 WSAAsyncSelect . 能满足300-500客户连接的网络服务需求.
/************************************************************************/
/*
服务端网络引擎接口
*/
/************************************************************************/
//回调处理数据函数原型
typedef VOID WINAPI ServerProcessRecvData( DWORD dwNetworkIndex , BYTE *pMsg , WORD wSize );
class INetEngine
{
public:
//virtual ~INetEngine(void)=0;
//是否已初始化监听
virtual BOOL IsListening()=0;
//网络初始化
virtual BOOL Init(char* IP, WORD Port , ServerProcessRecvData* pProcessRecvData , DWORD MaxConnectNum )=0;
//停止网络服务
virtual VOID Shutdown()=0;
//网络更新
virtual VOID Update()=0;
//单个断开
virtual BOOL DisConnect( DWORD dwNetworkIndex )=0;
//指定发送
virtual BOOL PutInt( DWORD dwNetworkIndex ,int v )=0;
virtual BOOL Putshort( DWORD dwNetworkIndex , short v )=0;
virtual BOOL FlushSendBuffer( DWORD dwNetworkIndex )=0;
//得到当前总连接数
virtual DWORD GetNumberOfConnections()=0;
//得到ip
virtual char* GetIP( DWORD dwNetworkIndex )=0;
//设置心跳超时.当客户超过这段时间,没有给服务器发送一包消息,就断定他断开了.
virtual void SetHeartbeatTimeOut(DWORD timeout)=0;//单位秒
//设置连接超时.当客户连接到服务端后.没有发送一包消息.超过这段时间,就把他断开.防止恶意空闲连接.
virtual void SetConnTimeOut(DWORD timeout)=0; //单位秒
};
/************************************************************************/
/*
客户端网络引擎接口
*/
/************************************************************************/
//回调处理数据函数原型
typedef VOID WINAPI ClientProcessRecvData( BYTE *pMsg , WORD wSize );
class INetClient
{
public:
//连接服务器
virtual BOOL Connect(const char* ServerIP, WORD Port , ClientProcessRecvData* pProcessRecvData )=0;
//断开连接
virtual BOOL DisConnect( )=0;
//指定发送
virtual BOOL Send( BYTE *pMsg , WORD wSize )=0;
};
//server socket io模型
enum eSERVER_SOCKET_IO_MODEL
{
eSELECT_THREADPOOL=0, //select+线程池
eWSASYNSELECT, //WSAAsyncSelect
};
//创建服务端网络引擎
NETWORK_API INetEngine* CreateNetEngine(eSERVER_SOCKET_IO_MODEL IO_mode,char*IP, WORD Port , ServerProcessRecvData* pProcessRecvData , DWORD MaxConnectNum );
//销毁服务端网络引擎
NETWORK_API VOID DestroyNetEngine( INetEngine* net );
//创建客户端网络引擎
NETWORK_API INetClient* CreateNetClient(const char* ServerIP, WORD Port , ClientProcessRecvData* pProcessRecvData );
//销毁客户端网络引擎
NETWORK_API VOID DestroyNetClient( INetClient* net );