600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 网络游戏通讯引擎 高性能IOCP模型(.Net)

网络游戏通讯引擎 高性能IOCP模型(.Net)

时间:2023-11-22 13:57:08

相关推荐

网络游戏通讯引擎 高性能IOCP模型(.Net)

前言

Steed是本人在公司从事通信引擎开发多年的经验基础上开发的一套通用的网络通信库,使用C++语言开发,支持高并发连接,底层使用IOCP技术。设计模式参考了著名的C++准标准库Boost中的Asio库。SteedNet是在遵循C++版本设计模式基础上,用C#编程语言实现并优化的.Net版本。

C++版本曾用于开发游戏服务器,.Net版本则用于开发物联网智能感知设备服务器。这是一套在企业项目实践中运行两年以上,经过考验的代码,现本人拿出来免费分享给广大的程序员朋友,欢迎下载使用(除商业用途,不提供源码)。

引擎概述

SteedNet是一套用于开发基于TCP协议的C/S结构应用程序的网络引擎组件,引擎组件的宗旨就是让网络应用程序开发人员能够摆脱网络底层功能的开发和维护,专注于上层的业务逻辑开发。它提供以非常简单的方式开发出功能强大的网络程序,同时事先解决了一些网络常见的问题:

一、完整的接收数据包。不会出现只接收到部分数据的情况,如果只接收到部分数据,则底层会等待其余数据,然后完整地提交给上层。

二、定时检查恶意连接。如果客户端只连接不发数据,以此占用连接数量,底层则会检测出来并自动关闭此连接。

三、防止恶意发送数据,占用内存。如果客户端用非法格式发送数据,当内存占用超过标准量,就会发送一条错误消息给逻辑层处理。

四、内部使用内存池,防止内存碎片。底层对象的分配使用了内存池技术,而何时释放完全由用户决定,如果忘记释放,则程序退出时,会自动释放。

使用SteedNet开发有以下几个特点:

一、灵活的IO服务。IO服务的底层就是IOCP服务,这个服务是整个库的核心功能之一,可自由为它配置线程,灵活分派线程任务。

二、可控的定时器。所谓可控是指定时器的逻辑处理线程是可设置的,可以设置单线程可多线程,可以设置与逻辑处理相同的线程。

三、简洁高性能的线程池。基于IO服务的线程池,可随时增加或减少线程数量,线程池内设任务队列,自动调配线程去执行任务,开发者只要向线程投递任务即可,投递任务的方式,通过上面提到的IO服务来进行。

四、代码简洁。整个库只有十几个类,每个类的主要函数只有两三个,简简单单的几个类、简简单单的几个方法调用,便可以开发功能强大并且高性能的企业级应用程序。

五、设计优雅。主要的几个类都是依赖于IO服务类,都是通过构造函数实现依赖注入。整个结构设计优雅,容易理解。

SteedNet借鉴了boost.asio的开发思路与模式,但并未使用boost的任何文件,也不依赖boost的任何功能,代码完全由作者编写。

系统环境:

Windows Server 、 Windows Server或Windows Server R2

运行平台:

基于Microsoft .NetFramework 3.5 SP1或更高版本。

使用方法

1.把SteedNet.AppCommon.dll和workCommEngine.dll放到项目的Bin目录(其他目录也是可以的)。

2.在项目中引用SteedNet.AppCommon.dll和workCommEngine.dll。具体方法是,右键点击项目->添加引用->浏览,浏览组件所在目录,选择SteedNet.AppCommon.dll或workCommEngine.dll,确定就行了。

3.导入命名空间,共四个SteedNet.AppCommon、workCommEngine、workCommEngine.Protocol、workCommEngine.Sockets。示例代码:

using SteedNet.AppCommon;

using workCommEngine;

using workCommEngine.Protocol;

using workCommEngine.Sockets;

运行例子截图:

服务端

客户端

查看服务器端代码示例:/xiaoluo123/article/details/50403828

查看客户端代码示例:/xiaoluo123/article/details/50403958

下载组件

下载服务端与客户端示例代码

有需要交流的朋友可以加QQ630307889。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。