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 );