⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 netengine.h

📁 采用完成端口的client/server DLL源码
💻 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 + -