没有合适的资源?快使用搜索试试~ 我知道了~
资源详情
资源评论
资源推荐
InIOCP(小旋风服务套件)
技 术 要 点
(版本:2.5.30.1221)
适用版本:Delphi 7、Delphi 2007、
Delphi XE、Delphi XE5-XE10
作 者:高凉新农,QQ 群:365531817
下载途径:csdn.net,2ccc.com 的 ftp 资源
github:https://github.com/cnwneumann/InIOCP
1
进入正题之前,先简单谈谈开发这套软件的缘由,作者本人是 Delphi
使用者,从事数据库开发较多,偶尔也用 Indy、RO、RTC 等组件弄一下网络
开发,其中 RTC 用得最多,总的来说,感觉都不理想。本人接触 IOCP 不久,
学习它后产生了亲自写一套组件的想法,于是按设想慢慢摸索,没想到停不
下来了,最终 InIOCP 得以成品发布。
再顺便说一下本软件的名称,以前用“In-IOCP 服务组件库”,有人说
很拗口,现在稍作改动,叫“InIOCP 服务套件”,顺便起了个中文名“小旋
风”,全称为“InIOCP 小旋风服务套件”,名字嘛,不同人的喜好不同,如
果你喜欢,也可以另起一个。
InIOCP 服务套件首发已经一年多,作了多次更新,但一直没写过什么使
用说明或技术文档,主要原因是写文档与写代码的思路不同、要组织敲打文
字,比较费时,还有就是旧版本的 C/S 模式的相关代码比较乱,传输机制也
不理想等。
1.6 版之后,开始着手改进 C/S 模式的传输机制,采用与 HTTP 服务类似
的方法,经过几个月的改造,总算完工。
新版重新规划了 C/S 模式代码,质量有了较大提升,服务端 Socket 的内
存占用减半,而使用方法与旧版的基本一样,只是个别过程、方法或事件名
称有了调整,删除了旧版的子任务功能,增加了新特性,使用起来更为灵活
方便了;HTTP 服务部分代码基本不变。
本软件没什么高深的技术,对熟悉 Delphi 的开发者来说,理解代码是很
容易的事,但为了方便初学者学习交流,有必要写个简单的文档,简明扼要
地解释一下。
组织文字和写代码的思维完全不同,要讲清楚也不容易,只能抓重点了,
先从简单的开始。
2
一、基础知识
一、消息封装
1.字段。用过数据库组件的都知道,数据集 DataSet 里面有字段 Field,
InIOCP 的消息包相当于 DataSet,也有 Field,详见单元 iocp_msgPacks:
TVarField = class(TObject)
... ...
2.消息包。为了更方便直观使用消息,对其进行封装是有必要的,每个
消息就包含一个或多个上面说的字段 Field:
TBasePack = class(TInList)
... ...
从 TBasePack 继 承 出 带 协 议 头 的 消 息 类 THeaderPack , 再 从
THeaderPack 继承出发送、接收用的消息类(收发型消息),这里不作细述。
3.消息组成。InIOCP 的收发型消息分两部分,即主体和附件,主体指
As...系列的变量型内容,附件指附加到消息上的内容,也就是文件或数据流。
这是 InIOCP 消息的一大特点,让消息使用更灵活,大大方便了各种数据
的传输。
InIOCP 消息还支持压缩和校验码,压缩类型为 Zip,校验码类型有 MD5、
MurmurHash 两种。
InIOCP 消息有两个重要的过程(procedure),一个是 SaveToStream,
作用是 把 As 系列变 量 表 转 换 为 内 存 流 ,这是发 送 前 必 须 的 ; 一 个 是
Initialize,作用是把内存流解析为 As 系列变量表,方便消息的变量/字段
读取。
C/S 模式的每一消息都带协议头 TMsgHead,协议头是对当前消息的整体
描述,记录其重要信息,详见单元 iocp_msgPacks。
现版本支持 WebSocket 协议,也做了简单的 JSON 封装,详见第三部分。
二、数据发送器
服务端和客户端的数据发送器有所不同,服务端用 WSASend 发送数据,
剩余10页未读,继续阅读
学习呀三木
- 粉丝: 22
- 资源: 303
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0