StyleMan

    技术2022-05-19  23

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

     


    最新回复(0)