Delphi下IOCP开源框架:DIOCP 成功应用案例分享

简介: 首先说明,该项目不是本人的项目,本文转自盒子。 该项目使用的DIOCP版本为1.0,目前diocp为3.5   以下是盒子的原文 ------------------------------------------------------------------------------ DIOCP是Delphi下进行IOCP服务端通讯开发的一个非常好的开源框架,稳定、高效并且使用起来十分简单。

首先说明,该项目不是本人的项目,本文转自盒子。

该项目使用的DIOCP版本为1.0,目前diocp为3.5

 

以下是盒子的原文

------------------------------------------------------------------------------

DIOCP是Delphi下进行IOCP服务端通讯开发的一个非常好的开源框架,稳定、高效并且使用起来十分简单。
    自己两个多月之前因为需要使用Delphi开发一个TCP服务端,当时也是到处爬文,希望找到一个稳定且好用的IOCP开源框架,整整一周的时间,看了很多,也对比了很多,最后选择了DIOCP,现在服务器端正式版本已经上线运行了36天的时间了,所有运行一切稳定,无论是CPU占用、内存使用还是通信稳定性,DIOCP的表现真的没有让我失望,表现得非常优秀,闲话不说,直接上图:
按此在新窗口浏览图片
服务器环境:
  OS:Windows Server 2003
  CPU:Intel 双核      内存:2G
  网络带宽:5M
  网络类型:BGP
实际性能数据:
    程序用户同时在线数:1200 – 1300之间   峰值:1511(此峰值为真实用户同时在线数,不是理论性能峰值,目前的用户数只有这些,自己测试的时候,连接数测试过5K,也同样运行稳定)。
    服务器端运行到发文时已经36天多了,内存峰值也只有76M,CPU占用一直都稳定在10%以下,应该说各项指标都非常的好,非常满意。
    说实话,现在真正在使用Delphi进行开发的团队不算多了,但是Delphi中总是有很多的东西让我无法完全割舍它,比如它的快速开发、再比如网络上无比多的第三方控件、再再比如它强大的数据操纵能力等等等等。现在这些理由中又多了一项,就是DIOCP。特意写这篇文章就是为了把这个好东西推荐给大家。源码地址:
    源码:https://git.oschina.net/ymofen/DIOCP
    DEMO:https://git.oschina.net/ymofen/diocp-samples  DEMO当中大家就会看到,只需要在uClientContext单元的dataReceived方法中加入自己的整个业务逻辑层就可以了,DEMO中还配有客户端的例子,很完整。
    另外,现在DIOCP正在发展DIOCP3,封装程度更好,用起来更加的方便,回头,我也要抓紧去研究一下。
    DIOCP3的源码地址是:https://github.com/ymofen/diocp3

目录
相关文章
|
数据库
Diocp截图
跑了个数据库的查询和插入,删除。     Http SVR DEMO http://123.232.98.202:8081/
667 0
|
网络协议 数据处理 Windows
DIOCP 运作核心探密
原文连接: http://blog.qdac.cc/?p=2362 原作者: BB   来自网友天地弦的DIOCP早已经广为人知了,有很多的同学都用上了它,甚至各种变异、修改版本也出了不少。我最近也在学习DIOCP,打算将它用于自己的服务端,今天让我们来一起探密它(DIOCP)的运作核心吧。
1503 0
DIOCP-DIOCPv5的处理能力
今天和BB讨论了下DiocpV5的单连接处理能力。一直没有做过这方面的测试,稍微试了一下。 把开始的时候客户端Sleep(10),为了测试处理能力,把Sleep(10)去掉了,20秒(实际应该算17秒,点开就开始计时了),可以处理75W的请求而且进行了投递回去。
811 0
DIOCP开源项目-DIOCP3直接发送对象,帮你处理粘包问题
该DEMO演示,如何在客户端与服务端之间直接传递TStream对象,让你专注于处理数据逻辑,可以忽略处理网络传输间粘包的问题。 上面由服务端向所有的客户端推送一个消息TMemoryStream对象(该对象为字符串数据)。
880 0
DIOCP开源项目-DIOCP3重写笔记-1
这几天在在重新DIOCP3,基本工作已经初步完成,进入测试阶段,今天加入排队投递,本认为是个很简单的工作,稍微不注意,留了两个坑,调了7,8个小时,刚刚总算找到问题,记录一下, 关于排队投递的流程 这是投递一个TIocpSendRequest的流程,投递开始,投递一块数据,最大50K,如果超过50K则分批进行投递。
762 0
DIOCP-V5发布
DIOCP-v5开源项目 https://github.com/ymofen/diocp-v5   DIOCP-v5 0.0.1   2015-02-22 08:40:40 1.规范单元文件的命名,和组件的命名 2.中文注释重要的过程和类名
1046 0
|
存储
【DIOCP知识库】连接上下文TIocpClientContext
【概述】      该类管理远程连接,每一个远程连接会对应一个该类的实例,开发时可以通过继承该类,扩展属性,可以存储更多的连接信息,可以重写OnRecvBuffer方法进行数据逻辑的处理   【字段/属性说明】 property RemoteAddr: String read FRemoteAddr; 说明:远程连接IP。
772 0
|
消息中间件 网络协议 缓存
DIOCP开源项目-高效稳定的服务端解决方案(DIOCP + 无锁队列 + ZeroMQ + QWorkers) 出炉了
[概述] 自从上次发布了[DIOCP开源项目-利用队列+0MQ+多进程逻辑处理,搭建稳定,高效,分布式的服务端]文章后,得到了很多朋友的支持和肯定。这加大了我的开发动力,经过几个晚上的熬夜,终于在昨天晚上,DEMO基本成型,今天再加入了QWorkers来做逻辑处理进程,进一步使得逻辑处理进程更加方便和高效。
1217 0
|
程序员 C++
DIOCP开源项目-利用队列+0MQ+多进程逻辑处理,搭建稳定,高效,分布式的服务端
  最近头脑里面一直在想怎么样让能让大家基于DIOCP上写出稳定的服务端程序。很多朋友问我,你DIOCP稳定吗,我可以用他来做三层服务器吗? 当时我是这样回答的,我只能保证DIOCP底层通信的稳定。
949 0
|
C++
Delphi-IOCP学习笔记<一>====从零开始学习IOCP
之前一直接从事企业管理的软件,接触网络比较少。网络方面的知识也很惨。 最近想弄下iocp。网上找了很多资料,大部分是关于c++的。delphi的比较少。 看了下,不适合刚接触网络的菜鸟学习! 看过fxh的blog,觉得写的容易理解。
955 0