StyleMan_NetEngine 轻量级网络引擎 v1.0发表

来源:互联网 发布:淘宝拍照用什么单反 编辑:程序博客网 时间:2024/05/17 06:50

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