📄 netengine.h
字号:
// NETENGINE_H
// =================================================================
// 网络引擎库,采用IOCP模型
// ================================================================
// 作者(Aurthor): 姜云(FOX)
// 信箱(Email): jiangyun@vip.citiz.net
// 日期(Developed On): 12.18.2003
// 更新(Last Update): 12.18.2003
// ================================================================
#ifndef NETENGINE_H_12_18_2003_
#define NETENGINE_H_12_18_2003_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
//宏定义
#define DATA_BUFSIZE 8192
//头文件
#include "inetengine.h"
#include <winsock2.h>
#include <windows.h>
#include <iostream>
using namespace std;
//网络引擎库,采用IOCP模型
//Server类型,多点交流
class NetEngineServer
{
public://类型定义
typedef bool (*MsgFun)( KEY* a_pBuffer,NET_MSG a_eMsg );
public:
NetEngineServer( MsgFun a_pFun,DWORD a_dwPort = 5000 );
~NetEngineServer( void );
public:
//工作线程
static DWORD WINAPI ThreadFunc( LPVOID a_pVoid );
//单件设计模式.this指针返回
static NetEngineServer* Instance( MsgFun a_pFun = NULL );
public:
//获取完全端口句柄
HANDLE GetHandle( void );
//消息监听
bool Listen( void );
//投递一个接受消息
bool PostRecv( KEY* a_pKey );
//投递一个发送消息
bool PostSend( KEY* a_pKey,void* a_pBuffer,DWORD a_dwLen );
private:
//创建工作线程
bool CreateWorkerThread( void );
//初始化
bool InitServer( DWORD a_dwPort );
//内部消息处理
bool MsgProcess( KEY* a_pKey,NET_MSG a_eMsg );
//断开处理
bool CloseOneSocket( KEY* a_pKey );
private:
SOCKET m_Listen;//接受
HANDLE m_hCompletionPort;//重叠端口句柄
MsgFun m_pMsgProcessFun;//消息处理函数指针
static NetEngineServer* m_pMe;//对象指针(单件设计)
};
#endif //NETENGINE_H_12_18_2003_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -